pyqt5对用qt designer设计的窗体实现弹出子窗口的示例
1.用qtdesigner编写主窗体,窗体类型是MainWindow,空白窗口上一个按钮。并转换成mainWindow.py
#-*-coding:utf-8-*-
#Formimplementationgeneratedfromreadinguifile'f.ui'
#
#Createdby:PyQt5UIcodegenerator5.9
#
#WARNING!Allchangesmadeinthisfilewillbelost!
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(80,90,75,23))
self.pushButton.setObjectName("pushButton")
MainWindow.setCentralWidget(self.centralwidget)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
defretranslateUi(self,MainWindow):
_translate=QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow","MainWindow"))
self.pushButton.setText(_translate("MainWindow","PushButton"))
2.用qtdesigner编写子窗体,窗体类型是Dialog,空白窗口上一个按钮。并转换成childWindow.py
fromPyQt5importQtCore,QtGui,QtWidgets
classUi_Dialog(object):
defsetupUi(self,Dialog):
Dialog.setObjectName("Dialog")
Dialog.resize(400,300)
self.pushButton=QtWidgets.QPushButton(Dialog)
self.pushButton.setGeometry(QtCore.QRect(160,100,75,23))
self.pushButton.setObjectName("pushButton")
Dialog.setWindowFlags(QtCore.Qt.WindowStaysOnTopHint)#设置窗体总显示在最上面
self.retranslateUi(Dialog)
QtCore.QMetaObject.connectSlotsByName(Dialog)
defretranslateUi(self,Dialog):
_translate=QtCore.QCoreApplication.translate
Dialog.setWindowTitle(_translate("Dialog","Dialog"))
self.pushButton.setText(_translate("Dialog","PushButton"))
3,编写调用程序,这个重点,
importsys fromPyQt5.QtWidgetsimportQApplication,QMainWindow,QDialog fromdust.mainWindowimport* fromdust.childWindowimport* if__name__=='__main__': app=QApplication(sys.argv) #实例化主窗口 main=QMainWindow() main_ui=Ui_MainWindow() main_ui.setupUi(main) #实例化子窗口 child=QDialog() child_ui=Ui_Dialog() child_ui.setupUi(child) #按钮绑定事件 btn=main_ui.pushButton btn.clicked.connect(child.show) #显示 main.show() sys.exit(app.exec_())
4.上面的程序只是能显示了,要想添加自定义事件,还不行,加自定义事件,有一个办法是再封装一个类,主窗体和子窗体都如此。
importsys
fromPyQt5.QtWidgetsimportQApplication,QMainWindow,QDialog
fromdust.mainWindowimport*
fromdust.childWindowimport*
#mainWindow
classMyMainWindow(QMainWindow,Ui_MainWindow):
def__init__(self):
super(MyMainWindow,self).__init__()
self.setupUi(self)
self.setGeometry(0,0,1024,600)
self.setWindowTitle('mainwindow')
defpaintEvent(self,event):
painter=QPainter(self)
pixmap=QPixmap("./image/bg.jpg")
painter.drawPixmap(self.rect(),pixmap)
defkeyPressEvent(self,e):
ife.key()==Qt.Key_Escape:
self.close()
classChildWindow(QDialog,Ui_Dialog):
def__init__(self):
super(ChildWindow,self).__init__()
self.setupUi(self)
self.setWindowTitle('childwindow')
self.pushButton.clicked.connect(self.btnClick)#按钮事件绑定
defbtnClick(self):#子窗体自定义事件
self.close()
if__name__=='__main__':
app=QApplication(sys.argv)
main=MyMainWindow()
child=ChildWindow()
btn=main.pushButton#主窗体按钮事件绑定
btn.clicked.connect(child.show)
main.show()
sys.exit(app.exec_())
以上这篇pyqt5对用qtdesigner设计的窗体实现弹出子窗口的示例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。