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实现的计数排序算法示例
Nov 29 Python
Python:Scrapy框架中Item Pipeline组件使用详解
Dec 27 Python
Python使用random模块生成随机数操作实例详解
Sep 17 Python
python socket 聊天室实例代码详解
Nov 14 Python
python使用python-pptx删除ppt某页实例
Feb 14 Python
使用matplotlib动态刷新指定曲线实例
Apr 23 Python
Python3如何在服务器打印资产信息
Aug 27 Python
Python基于execjs运行js过程解析
Nov 27 Python
Python函数调用追踪实现代码
Nov 27 Python
python statsmodel的使用
Dec 21 Python
python实现简单的学生管理系统
Feb 22 Python
如何用 Python 制作一个迷宫游戏
Feb 25 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命令空间namespace及use的用法小结
2017/11/27 PHP
鼠标拖动实现DIV排序示例代码
2013/10/14 Javascript
js中window.open()的所有参数详细解析
2014/01/09 Javascript
JS实现图片产生波纹一样flash效果的方法
2015/02/27 Javascript
JavaScript中的getTimezoneOffset()方法使用详解
2015/06/10 Javascript
javascript实现的简单计时器
2015/07/19 Javascript
JS实现不使用图片仿Windows右键菜单效果代码
2015/10/22 Javascript
详解JS去重及字符串奇数位小写转大写
2016/12/29 Javascript
bootstrap IE8 兼容性处理
2017/03/22 Javascript
Vue2 使用 Echarts 创建图表实例代码
2017/05/18 Javascript
详解vuex 中的 state 在组件中如何监听
2017/05/23 Javascript
Vue实现选择城市功能
2017/05/27 Javascript
jquery.validate.js 多个相同name的处理方式
2017/07/10 jQuery
Angular使用过滤器uppercase/lowercase实现字母大小写转换功能示例
2018/03/27 Javascript
React从react-router路由上做登陆验证控制的方法
2018/05/10 Javascript
vue props 单项数据流实例分享
2020/02/16 Javascript
原生JavaScript实现拖动校验功能
2020/09/29 Javascript
使用Vant完成DatetimePicker 日期的选择器操作
2020/11/12 Javascript
python中的sort方法使用详解
2014/07/25 Python
简单介绍Ruby中的CGI编程
2015/04/10 Python
ubuntu系统下 python链接mysql数据库的方法
2017/01/09 Python
python中闭包Closure函数作为返回值的方法示例
2017/12/17 Python
python代码实现ID3决策树算法
2017/12/20 Python
pandas实现选取特定索引的行
2018/04/20 Python
利用Python如何批量修改数据库执行Sql文件
2018/07/29 Python
TensorFlow MNIST手写数据集的实现方法
2020/02/05 Python
python ETL工具 pyetl
2020/06/07 Python
keras load model时出现Missing Layer错误的解决方式
2020/06/11 Python
html5 touch事件实现页面上下滑动效果【附代码】
2016/03/10 HTML / CSS
会计学应届毕业生推荐信
2013/11/04 职场文书
学生党支部先进事迹
2014/02/04 职场文书
师范学院毕业生求职信
2014/06/24 职场文书
撤诉申请书法院范本
2015/05/18 职场文书
千手观音观后感
2015/06/03 职场文书
保姆聘用合同
2015/09/21 职场文书
JS前端可视化canvas动画原理及其推导实现
2022/08/05 Javascript