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模拟登录百度贴吧(百度贴吧登录)实例
Dec 18 Python
Python urlopen()函数 示例分享
Jun 12 Python
Python多线程编程(四):使用Lock互斥锁
Apr 05 Python
使用python爬虫实现网络股票信息爬取的demo
Jan 05 Python
用python实现的线程池实例代码
Jan 06 Python
python搭建服务器实现两个Android客户端间收发消息
Apr 12 Python
Python自定义函数实现求两个数最大公约数、最小公倍数示例
May 21 Python
基于python指定包的安装路径方法
Oct 27 Python
python 调用钉钉机器人的方法
Feb 20 Python
Python PIL读取的图像发生自动旋转的实现方法
Jul 05 Python
Python和Anaconda和Pycharm安装教程图文详解
Feb 04 Python
python学生管理系统的实现
Apr 05 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
《星际争霸》各版本雷兽特点图文解析 雷兽不同形态一览
2020/03/02 星际争霸
PHP&MYSQL服务器配置说明
2006/10/09 PHP
将酷狗krc歌词解析并转换为lrc歌词php源码
2014/06/20 PHP
详解PHP的Yii框架中自带的前端资源包的使用
2016/03/31 PHP
PHP调用QQ互联接口实现QQ登录网站功能示例
2019/10/24 PHP
一段实时更新的时间代码
2006/07/07 Javascript
初窥JQuery(二) 事件机制(1)
2010/11/25 Javascript
jQuery Ajax异步处理Json数据详解
2013/11/05 Javascript
jquery控制display属性为none或block
2014/03/31 Javascript
jQuery学习笔记之创建DOM元素
2015/01/19 Javascript
深入浅析javascript立即执行函数
2015/10/23 Javascript
js实现卡片式项目管理界面UI设计效果
2015/12/08 Javascript
一个用jquery写的判断div滚动条到底部的方法【推荐】
2016/04/29 Javascript
javascript中对Date类型的常用操作小结
2016/05/19 Javascript
微信小程序 引用其他js文件实现代码
2017/02/22 Javascript
Nodejs多站点切换Htpps协议详解及简单实例
2017/02/23 NodeJs
JavaScript初学者必看“new”
2017/06/12 Javascript
几个你不知道的技巧助你写出更优雅的vue.js代码
2018/06/11 Javascript
node.js express框架简介与实现
2019/07/23 Javascript
原生js实现的移动端可拖动进度条插件功能详解
2019/08/15 Javascript
详解Vue3中对VDOM的改进
2020/04/23 Javascript
Python中os.path用法分析
2015/01/15 Python
Python中的defaultdict与__missing__()使用介绍
2018/02/03 Python
Python OpenCV读取png图像转成jpg图像存储的方法
2018/10/28 Python
使用Python webdriver图书馆抢座自动预约的正确方法
2021/03/04 Python
通过css3动画和opacity透明度实现呼吸灯效果
2019/08/09 HTML / CSS
汽车检测与维修个人求职信
2013/09/24 职场文书
冰淇淋店创业计划书范文
2013/12/27 职场文书
化工操作工岗位职责
2014/04/29 职场文书
农村党支部书记党群众路线四风问题整改措施
2014/09/26 职场文书
首都博物馆观后感
2015/06/05 职场文书
2016学校先进集体事迹材料
2016/02/29 职场文书
2019初中学生入团申请书
2019/06/27 职场文书
Mybatis-Plus进阶分页与乐观锁插件及通用枚举和多数据源详解
2022/03/21 Java/Android
SpringCloud项目如何解决log4j2漏洞
2022/04/10 Java/Android
Python实战实现爬取天气数据并完成可视化分析详解
2022/06/16 Python