pyqt5对用qt designer设计的窗体实现弹出子窗口的示例
作者:wzxxtt62267018 时间:2023-01-28 12:58:07
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, QtWidgets
class 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, QtWidgets
class 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 sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QDialog
from 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 sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QDialog
from dust.mainWindow import *
from dust.childWindow import *
#mainWindow
class 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_())
来源:https://blog.csdn.net/wzxxtt62267018/article/details/80897185
标签:pyqt5,qt,designer,子窗口
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
php进程daemon化的正确实现方法
2023-10-01 09:14:09
细化解析:轻松掌握怎样测试 MySQL安装
2009-01-14 11:54:00
下拉列表两级连动的新方法(二)
2009-06-04 18:22:00
ASP程序中使用断开的数据记录集
2007-10-17 18:51:00
python日期相关操作实例小结
2021-07-14 18:39:13
ul设置浮动后不能自适应高度
2011-01-25 12:48:00
如何判断SQL语句是否执行了?
2010-01-12 20:03:00
ASP的URLDecode函数URLEncode解码函数
2011-02-16 11:17:00
MySQL与PHP的基础与应用专题之数据控制
2023-11-23 01:03:21
![](https://img.aspxhome.com/file/2023/8/99348_0s.png)
Oracle不同数据库间对比分析脚本
2010-07-26 13:24:00
js调用flash代码
2010-01-23 12:35:00
Go语言学习之反射的用法详解
2023-06-16 06:40:40
![](https://img.aspxhome.com/file/2023/1/86281_0s.png)
优化MySQL的数据库性能的八种方法
2012-01-05 19:28:53
4款Javascript放大镜特效脚本
2009-10-14 20:46:00
![](https://img.aspxhome.com/file/UploadPic/200910/14/javascript-9-7-6j-25s.jpg)
oracle怎样修改表名、列名、字段类型、添加表列、删除表列
2010-07-23 11:10:00
php生成随机数/生成随机字符串的方法小结【5种方法】
2023-09-05 20:23:21
Python实现比较两个列表(list)范围
2022-07-20 18:08:04
AXObject解决IE需要激活 ActiveX 控件方法
2007-11-08 12:16:00
mysql myisam 优化设置
2010-03-25 10:18:00
PHP5中使用DOM控制XML实现代码
2023-09-30 09:00:07