pyqt 多窗口之间的相互调用方法
*在编程开发中,一个程序不可避免的需要多窗口操作来实现具体的功能。
实现此功能的基本步骤(以三个窗口为例,使用主窗口调用其它两个窗口)
#主窗口 fromPyQt5importQtCore,QtGui,QtWidgets classUi_MainWindow(object): defsetupUi(self,MainWindow): MainWindow.setObjectName("MainWindow") MainWindow.resize(800,600) self.centralwidget=QtWidgets.QWidget(MainWindow) self.centralwidget.setObjectName("centralwidget") self.pushButton=QtWidgets.QPushButton(self.centralwidget) self.pushButton.setGeometry(QtCore.QRect(70,180,75,23)) self.pushButton.setObjectName("pushButton") self.pushButton_2=QtWidgets.QPushButton(self.centralwidget) self.pushButton_2.setGeometry(QtCore.QRect(250,180,75,23)) self.pushButton_2.setObjectName("pushButton_2") MainWindow.setCentralWidget(self.centralwidget) self.menubar=QtWidgets.QMenuBar(MainWindow) self.menubar.setGeometry(QtCore.QRect(0,0,800,23)) self.menubar.setObjectName("menubar") MainWindow.setMenuBar(self.menubar) self.statusbar=QtWidgets.QStatusBar(MainWindow) self.statusbar.setObjectName("statusbar") MainWindow.setStatusBar(self.statusbar) self.retranslateUi(MainWindow) QtCore.QMetaObject.connectSlotsByName(MainWindow) defretranslateUi(self,MainWindow): _translate=QtCore.QCoreApplication.translate MainWindow.setWindowTitle(_translate("MainWindow","MainWindow")) self.pushButton.setText(_translate("MainWindow","打开窗口1")) self.pushButton_2.setText(_translate("MainWindow","打开窗口2")) #窗口1 classUi_Dialog(object): defsetupUi(self,Dialog): Dialog.setObjectName("Dialog") Dialog.resize(400,300) self.buttonBox=QtWidgets.QDialogButtonBox(Dialog) self.buttonBox.setGeometry(QtCore.QRect(30,240,341,32)) self.buttonBox.setOrientation(QtCore.Qt.Horizontal) self.buttonBox.setStandardButtons(QtWidgets.QDialogButtonBox.Cancel|QtWidgets.QDialogButtonBox.Ok) self.buttonBox.setObjectName("buttonBox") self.label=QtWidgets.QLabel(Dialog) self.label.setGeometry(QtCore.QRect(140,100,54,12)) self.label.setObjectName("label") self.retranslateUi(Dialog) self.buttonBox.accepted.connect(Dialog.accept) self.buttonBox.rejected.connect(Dialog.reject) QtCore.QMetaObject.connectSlotsByName(Dialog) defretranslateUi(self,Dialog): _translate=QtCore.QCoreApplication.translate Dialog.setWindowTitle(_translate("Dialog","Dialog")) self.label.setText(_translate("Dialog","这是窗口1")) #窗口2 classUi_Form(object): defsetupUi(self,Form): Form.setObjectName("Form") Form.resize(400,300) self.label=QtWidgets.QLabel(Form) self.label.setGeometry(QtCore.QRect(140,140,54,12)) self.label.setObjectName("label") self.retranslateUi(Form) QtCore.QMetaObject.connectSlotsByName(Form) defretranslateUi(self,Form): _translate=QtCore.QCoreApplication.translate Form.setWindowTitle(_translate("Form","Form")) self.label.setText(_translate("Form","这是窗口2"))
主程序入口:
#主程序 classMainWindow(QMainWindow,untitled.Ui_MainWindow): def__init__(self): super(MainWindow,self).__init__() self.setupUi(self) self.window2=Ui_Dialog() self.window2.setupUi() self.window3=Ui_Form() self.window3.setupUi() self.pushButton.clicked.connect(self.window2.show)#绑定窗口2 self.pushButton_2.clicked.connect(self.window3.show)#绑定窗口3 if__name__=='__main__': app=QApplication(sys.argv) MainWindow=MainWindow() MainWindow.show() sys.exit(app.exec_())
以上实现主窗口通过按钮弹出窗口1和窗口2
下面实现通过窗口按钮打开文件资源管理器,实现获取文件相关信息的功能:
1.在主窗口中添加一个按钮:
classUi_MainWindow(object): defsetupUi(self,MainWindow): ...... self.pushButton_3=QtWidgets.QPushButton(self.centralwidget) self.pushButton_3.setGeometry(QtCore.QRect(420,180,75,23)) self.pushButton_3.setObjectName("pushButton_3") defretranslateUi(self,MainWindow): ...... self.pushButton_3.setText(_translate("MainWindow","打开目录"))
2.主程序中添加:
#主程序 classMainWindow(QMainWindow,untitled.Ui_MainWindow): def__init__(self): super(MainWindow,self).__init__() self.setupUi(self) self.window2=Ui_Dialog() self.Window2.setupUi() self.window3=Ui_Form() self.Window3.setupUi() self.pushButton.clicked.connect(self.window2.show)#绑定窗口2 self.pushButton_2.clicked.connect(self.window3.show)#绑定窗口3 self.pushButton_3.clicked.connect(self.gefilename)#新增加的 #新增加的 defgefilename(self): filename=QFileDialog.getOpenFileName() returnfilename if__name__=='__main__': app=QApplication(sys.argv) MainWindow=MainWindow() MainWindow.show() sys.exit(app.exec_())
即可完成上述功能。
以上这篇pyqt多窗口之间的相互调用方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。