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实现定时同步本机与北京时间的方法
Mar 24 Python
把MySQL表结构映射为Python中的对象的教程
Apr 07 Python
分析Python编程时利用wxPython来支持多线程的方法
Apr 07 Python
python实现微信跳一跳辅助工具步骤详解
Jan 04 Python
Python实现二维数组输出为图片
Apr 03 Python
python破解zip加密文件的方法
May 31 Python
Python使用LDAP做用户认证的方法
Jun 20 Python
Python 中如何实现参数化测试的方法示例
Dec 10 Python
TensorFlow设置日志级别的几种方式小结
Feb 04 Python
Tensorflow 多线程与多进程数据加载实例
Feb 05 Python
python中time包实例详解
Feb 02 Python
pytorch 把图片数据转化成tensor的操作
Mar 04 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
微信公众平台接口开发入门示例
2014/12/24 PHP
PHP中实现接收多个name相同但Value不相同表单数据实例
2015/02/03 PHP
浅谈laravel5.5 belongsToMany自身的正确用法
2019/10/17 PHP
基于jquery实现的服务器验证控件的启用和禁用代码
2010/04/27 Javascript
单击浏览器右上角的X关闭窗口弹出提示的小例子
2013/06/12 Javascript
JS关键字球状旋转效果的实例代码
2013/11/29 Javascript
JS获得QQ号码的昵称,头像,生日的简单实例
2013/12/04 Javascript
js同源策略详解
2015/05/21 Javascript
jquery读写cookie操作实例分析
2015/12/24 Javascript
原生JS实现图片轮播与淡入效果的简单实例
2016/08/21 Javascript
基于Vue2.0的分页组件
2017/03/16 Javascript
jQuery遮罩层实例讲解
2017/05/11 jQuery
jQuery插件artDialog.js使用与关闭方法示例
2017/10/09 jQuery
完美解决手机浏览器顶部下拉出现网页源或刷新的问题
2017/11/30 Javascript
js数组方法reduce经典用法代码分享
2018/01/07 Javascript
详解VueJS应用中管理用户权限
2018/02/02 Javascript
JavaScript使用享元模式实现文件上传优化操作示例
2018/08/07 Javascript
[02:27]DOTA2英雄基础教程 莱恩
2014/01/17 DOTA
[01:00:26]Ti4主赛事胜者组第一天 EG vs NEWBEE 1
2014/07/19 DOTA
浅谈五大Python Web框架
2017/03/20 Python
python实现列表的排序方法分享
2019/07/01 Python
Python算法中的时间复杂度问题
2019/11/19 Python
python global和nonlocal用法解析
2020/02/03 Python
在python3中使用shuffle函数要注意的地方
2020/02/28 Python
python 发送get请求接口详解
2020/11/17 Python
借助HTML5 Canvas来绘制三角形和矩形等多边形的方法
2016/03/14 HTML / CSS
BONIA官方网站:国际奢侈品牌和皮革专家
2016/11/27 全球购物
幼师专业求职推荐信
2013/11/08 职场文书
土木工程师岗位职责
2013/11/24 职场文书
中学生英语演讲稿
2014/04/26 职场文书
网站出售协议书范文
2014/10/10 职场文书
2014年教务处工作总结
2014/12/03 职场文书
毕业论文指导教师评语
2014/12/30 职场文书
小学少先队活动总结
2015/05/08 职场文书
各国货币符号大全
2022/02/17 杂记
Python使用pyecharts控件绘制图表
2022/06/05 Python