首页 > 编程 > Python > 正文

pyqt5对用qt designer设计的窗体实现弹出子窗口的示例

2019-11-25 12:42:50
字体:
来源:转载
供稿:网友

1. 用qt designer编写主窗体,窗体类型是MainWindow,空白窗口上一个按钮。并转换成mainWindow.py

# -*- coding: utf-8 -*-# Form implementation generated from reading ui file 'f.ui'## Created by: PyQt5 UI code generator 5.9## WARNING! All changes made in this file will be lost!from PyQt5 import QtCore, QtGui, QtWidgetsclass Ui_MainWindow(object):  def setupUi(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)  def retranslateUi(self, MainWindow):    _translate = QtCore.QCoreApplication.translate    MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))    self.pushButton.setText(_translate("MainWindow", "PushButton"))

2. 用qt designer编写子窗体,窗体类型是Dialog, 空白窗口上一个按钮。并转换成childWindow.py

from PyQt5 import QtCore, QtGui, QtWidgetsclass Ui_Dialog(object):  def setupUi(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)  def retranslateUi(self, Dialog):    _translate = QtCore.QCoreApplication.translate    Dialog.setWindowTitle(_translate("Dialog", "Dialog"))    self.pushButton.setText(_translate("Dialog", "PushButton"))

3,编写调用程序,这个重点,

import sysfrom PyQt5.QtWidgets import QApplication, QMainWindow, QDialogfrom dust.mainWindow import *from dust.childWindow import *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. 上面的程序只是能显示了,要想添加自定义事件,还不行,加自定义事件,有一个办法是再封装一个类,主窗体和子窗体都如此。

import sysfrom PyQt5.QtWidgets import QApplication, QMainWindow, QDialogfrom dust.mainWindow import *from dust.childWindow import *#mainWindowclass MyMainWindow(QMainWindow, Ui_MainWindow):  def __init__(self):    super(MyMainWindow,self).__init__()    self.setupUi(self)        self.setGeometry(0, 0, 1024, 600)    self.setWindowTitle('main window')              def paintEvent(self, event):    painter = QPainter(self)    pixmap = QPixmap("./image/bg.jpg")    painter.drawPixmap(self.rect(),pixmap)         def keyPressEvent(self, e):         if e.key() == Qt.Key_Escape:      self.close()class ChildWindow(QDialog, Ui_Dialog):  def __init__(self):    super(ChildWindow,self).__init__()    self.setupUi(self)        self.setWindowTitle('child window')        self.pushButton.clicked.connect( self.btnClick) #按钮事件绑定  def btnClick(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对用qt designer设计的窗体实现弹出子窗口的示例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持武林网。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表