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发腾讯微博代码分享
Jan 10 Python
使用httplib模块来制作Python下HTTP客户端的方法
Jun 19 Python
Python实现各种排序算法的代码示例总结
Dec 11 Python
教你学会使用Python正则表达式
Sep 07 Python
Ubuntu16.04/树莓派Python3+opencv配置教程(分享)
Apr 02 Python
Python求解任意闭区间的所有素数
Jun 10 Python
python numpy 一维数组转变为多维数组的实例
Jul 02 Python
python输出100以内的质数与合数实例代码
Jul 08 Python
解决PyCharm的Python.exe已经停止工作的问题
Nov 29 Python
浅谈Python 命令行参数argparse写入图片路径操作
Jul 12 Python
windows下python 3.9 Numpy scipy和matlabplot的安装教程详解
Nov 28 Python
python本地文件服务器实例教程
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
攻克CakePHP系列二 表单数据显示
2008/10/22 PHP
php下将图片以二进制存入mysql数据库中并显示的实现代码
2010/05/27 PHP
比较discuz和ecshop的截取字符串函数php版
2012/09/03 PHP
PHP解析html类库simple_html_dom的转码bug
2014/05/22 PHP
ThinkPHP中URL路径访问与模块控制器之间的关系
2014/08/23 PHP
Smarty日期时间操作方法示例
2016/11/15 PHP
简单的前端js+ajax 购物车框架(入门篇)
2011/10/29 Javascript
jQuery中index()的用法分析
2014/09/05 Javascript
jQuery遍历之next()、nextAll()方法使用实例
2014/11/08 Javascript
jQuery中removeAttr()方法用法实例
2015/01/05 Javascript
jquery动态改变div宽度和高度
2015/02/09 Javascript
使用pcs api往免费的百度网盘上传下载文件的方法
2016/03/17 Javascript
Angular2 组件间通过@Input @Output通讯示例
2017/08/24 Javascript
JS库之Particles.js中文开发手册及参数详解
2017/09/13 Javascript
mui框架 页面无法滚动的解决方法(推荐)
2018/01/25 Javascript
微信小程序新手教程之页面打开数量限制
2019/03/03 Javascript
vue-i18n结合Element-ui的配置方法
2019/05/20 Javascript
Node.js从字符串生成文件流的实现方法
2019/08/18 Javascript
js中的this的指向问题详解
2019/08/29 Javascript
vue 微信扫码登录(自定义样式)
2020/01/06 Javascript
Python实现求解括号匹配问题的方法
2018/04/17 Python
解决python xlrd无法读取excel文件的问题
2018/12/25 Python
python如何保证输入键入数字的方法
2019/08/23 Python
Python tkinter实现图片标注功能(完整代码)
2019/12/08 Python
python应用Axes3D绘图(批量梯度下降算法)
2020/03/25 Python
解决reload(sys)后print失效的问题
2020/04/25 Python
python 深度学习中的4种激活函数
2020/09/18 Python
selenium+python自动化78-autoit参数化与批量上传功能的实现
2021/03/04 Python
HTML5 实战PHP之Web页面表单设计
2011/10/09 HTML / CSS
HTML5之语义标签介绍
2016/07/07 HTML / CSS
美国大尺码女装零售商:TORRID
2016/10/01 全球购物
军校本科大学生自我评价
2014/01/14 职场文书
医学专业毕业生推荐信
2014/07/12 职场文书
2015年纪检监察工作总结
2015/04/08 职场文书
升学宴学生致辞
2015/07/27 职场文书
四年级作文之植物
2019/09/20 职场文书