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


Posted in Python onJune 19, 2019

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_())

以上这篇pyqt5对用qt designer设计的窗体实现弹出子窗口的示例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python socket C/S结构的聊天室应用实现
Nov 30 Python
Python格式化css文件的方法
Mar 10 Python
python中函数总结之装饰器闭包详解
Jun 12 Python
Python基于回溯法子集树模板解决全排列问题示例
Sep 07 Python
linecache模块加载和缓存文件内容详解
Jan 11 Python
Python实现屏幕截图的两种方式
Feb 05 Python
python基础教程项目二之画幅好画
Apr 02 Python
python dataframe常见操作方法:实现取行、列、切片、统计特征值
Jun 09 Python
python3实现钉钉消息推送的方法示例
Mar 14 Python
用python拟合等角螺线的实现示例
Dec 27 Python
python实现飞机大战项目
Mar 11 Python
Python time库的时间时钟处理
May 02 Python
django框架基于模板 生成 excel(xls) 文件操作示例
Jun 19 #Python
python 读写excel文件操作示例【附源码下载】
Jun 19 #Python
解决.ui文件生成的.py文件运行不出现界面的方法
Jun 19 #Python
网易有道2017内推编程题 洗牌(python)
Jun 19 #Python
pyqt实现.ui文件批量转换为对应.py文件脚本
Jun 19 #Python
网易2016研发工程师编程题 奖学金(python)
Jun 19 #Python
PyQt5的安装配置过程,将ui文件转为py文件后显示窗口的实例
Jun 19 #Python
You might like
php 求质素(素数) 的实现代码
2011/04/12 PHP
解密ThinkPHP3.1.2版本之模块和操作映射
2014/06/19 PHP
微信公众平台网页授权获取用户基本信息中授权回调域名设置的变动
2014/10/21 PHP
PHP网站自动化配置的实现方法(必看)
2017/05/27 PHP
vs2003 js文件编码问题的解决方法
2010/03/20 Javascript
深入理解JavaScript 闭包究竟是什么
2013/04/12 Javascript
使用JQuery实现Ctrl+Enter提交表单的方法
2015/10/22 Javascript
JavaScript 函数的执行过程
2016/05/09 Javascript
Vue.js计算属性computed与watch(5)
2016/12/09 Javascript
基于axios 解决跨域cookie丢失的问题
2018/09/26 Javascript
Python Xml文件添加字节属性的方法
2018/03/31 Python
Python代码实现删除一个list里面重复元素的方法
2019/04/02 Python
python机器人运动范围问题的解答
2019/04/29 Python
Python 串口读写的实现方法
2019/06/12 Python
深入浅析python3中的unicode和bytes问题
2019/07/03 Python
Python  Django 母版和继承解析
2019/08/09 Python
TensorFlow的reshape操作 tf.reshape的实现
2020/04/19 Python
css3实现六边形边框的实例代码
2019/05/24 HTML / CSS
德国黑胶唱片、街头服装及运动鞋网上商店:HHV
2018/08/24 全球购物
美国领先的家庭健康检测试剂盒提供商:LetsGetChecked
2019/03/18 全球购物
职专应届生求职信
2013/11/16 职场文书
前台接待岗位职责
2013/12/03 职场文书
《中国的气候》教学反思
2014/02/23 职场文书
信访工作经验交流材料
2014/05/23 职场文书
森林防火宣传标语
2014/06/27 职场文书
人身损害赔偿协议书格式
2014/11/01 职场文书
营业用房租赁协议书
2014/11/26 职场文书
2015年英语教师工作总结
2015/05/20 职场文书
金正昆讲礼仪观后感
2015/06/11 职场文书
治庸问责工作总结
2015/08/11 职场文书
2016党员干部廉政准则学习心得体会
2016/01/20 职场文书
初中政治教师教学反思
2016/02/23 职场文书
python基础之停用词过滤详解
2021/04/21 Python
详解PHP Swoole与TCP三次握手
2021/05/27 PHP
Element实现动态表格的示例代码
2021/08/02 Javascript
游戏《东方异文石:爱亚利亚黎明》正式版发布
2022/04/03 其他游戏