PyQt5系列教程(三十八)多窗口
source link: https://xugaoxiang.com/2023/02/02/pyqt5-38-multiwindow/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
软硬件环境
- Windows 10 64bit
- Anaconda3 with python 3.8
- PyQt5 5.15
实际项目中,多窗口是个非常常见的操作,本篇就来看看 PyQt5
中多窗口的实现。
我们做2个窗口,主窗口中有个按钮,点击按钮后跳出第二个窗口
界面通过 designer
来设计,分别是这样的
第二个窗口中放一个 label
,加上点文字
界面完成后,得到 ui
文件,通过 pyuic5.bat
将 ui
转换成 py
文件,命令是这样的
pyuic5.bat -o ui_mainwindow.py mainwindow.ui
pyuic5.bat -o ui_secondwindow.py .secondwindow.ui
接下来编写2个窗口对应的文件代码,主窗口是 main_window.py
import sys
from PyQt5.QtWidgets import QMainWindow, QApplication
from ui_mainwindow import Ui_MainWindow
from second_window import SecondWindow
class MainWindow(QMainWindow, Ui_MainWindow):
def __init__(self, parent=None):
super(MainWindow, self).__init__(parent)
self.setupUi(self)
# 按钮点击处理
self.pushButton.clicked.connect(self.showSecondWindow)
def showSecondWindow(self):
# 实例化第二个窗口,然后进行show,这里保留主窗口的显示。
self.secWin = SecondWindow()
# 窗口的关闭调用self.secWin.close()方法
self.secWin.show()
if __name__ == '__main__':
# 常规的app启动步骤
app = QApplication(sys.argv)
windows = MainWindow()
windows.show()
sys.exit(app.exec_())
第二个窗口 second_window.py
就很简单了,显示出来就行
from PyQt5.QtWidgets import QMainWindow
from ui_secondwindow import Ui_MainWindow
class SecondWindow(QMainWindow, Ui_MainWindow):
def __init__(self, parent=None):
super(SecondWindow, self).__init__(parent)
self.setupUi(self)
运行 main_window.py
,可以看到
通常,在打开新窗口时,都会传递一些值过去,针对这种情况,我们也来看个实例
修改 second_window.py
的构造函数,加入参数接收一个字符串,然后将字符串显示在 label
控件上
def __init__(self, param, parent=None):
super(SecondWindow, self).__init__(parent)
self.setupUi(self)
print("从主窗口传递过来的字符是:{}".format(param))
self.label.setText(param)
回到 main_window.py
中调用的地方,实例化时带上要传递的字符串参数,其它数据类型也是类似
def showSecondWindow(self):
self.secWin = SecondWindow("Hello SecondWindow.")
self.secWin.show()
最后的执行结果是这样的
https://github.com/xugaoxiang/learningPyQt5
PyQt5系列教程
更多 PyQt5
教程,请移步
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK