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 相关文章推荐
Django中的CACHE_BACKEND参数和站点级Cache设置
Jul 23 Python
Python实现的RSS阅读器实例
Jul 25 Python
Python设计模式中单例模式的实现及在Tornado中的应用
Mar 02 Python
火车票抢票python代码公开揭秘!
Mar 08 Python
pandas每次多Sheet写入文件的方法
Dec 10 Python
python3爬虫获取html内容及各属性值的方法
Dec 17 Python
在Python中调用Ping命令,批量IP的方法
Jan 26 Python
提升Python效率之使用循环机制代替递归函数
Jul 23 Python
SELENIUM自动化模拟键盘快捷键操作实现解析
Oct 28 Python
python将邻接矩阵输出成图的实现
Nov 21 Python
selenium+Chrome滑动验证码破解二(某某网站)
Dec 17 Python
python高温预警数据获取实例
Jul 23 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
如何用C语言编写PHP扩展的详解
2013/06/13 PHP
PHP入门之常量简介和系统常量
2014/05/12 PHP
php绘图之生成饼状图的方法
2015/01/24 PHP
Laravel 框架控制器 Controller原理与用法实例分析
2020/04/14 PHP
isArray()函数(JavaScript中对象类型判断的几种方法)
2009/11/26 Javascript
jquery 追加tr和删除tr示例代码
2013/09/12 Javascript
JS实现日期加减的方法
2013/11/29 Javascript
js日期、星座的级联显示代码
2014/01/23 Javascript
js加入收藏以及使用Jquery更改透明度
2014/01/26 Javascript
javascript 拷贝节点cloneNode()使用介绍
2014/04/03 Javascript
jquery.mobile 共同布局遇到的问题小结
2015/02/10 Javascript
JS阻止事件冒泡行为和闭包的方法
2016/06/16 Javascript
关于数据与后端进行交流匹配(点亮星星)
2016/08/03 Javascript
基于BootStrap实现局部刷新分页实例代码
2016/08/08 Javascript
详解JavaScript时间处理之几个月前或几个月后的指定日期
2016/12/21 Javascript
使用vue.js实现checkbox的全选和多个的删除功能
2017/02/17 Javascript
基于javascript中的typeof和类型判断(详解)
2017/10/27 Javascript
Angular中使用ng-zorro图标库部分图标不能正常显示问题
2019/04/22 Javascript
解决Vue打包上线之后部分CSS不生效的问题
2019/11/12 Javascript
快速了解Vue父子组件传值以及父调子方法、子调父方法
2020/07/15 Javascript
如何利用JavaScript编写更好的条件语句详解
2020/08/10 Javascript
Python简单生成8位随机密码的方法
2017/05/24 Python
Python3解决棋盘覆盖问题的方法示例
2017/12/07 Python
运用TensorFlow进行简单实现线性回归、梯度下降示例
2018/03/05 Python
python定位xpath 节点位置的方法
2019/08/27 Python
python rsync服务器之间文件夹同步脚本
2019/08/29 Python
Python实现FLV视频拼接功能
2020/01/21 Python
jupyter notebook 多环境conda kernel配置方式
2020/04/10 Python
pycharm激活方法到2099年(激活流程)
2020/09/22 Python
安装Anaconda3及使用Jupyter的方法
2020/10/27 Python
HTML5页面直接调用百度地图API获取当前位置直接导航目的地的实现代码
2018/03/02 HTML / CSS
Bandier官网:奢侈、时尚前卫的健身服装首选目的地
2020/07/05 全球购物
化学教学随笔感言
2014/02/19 职场文书
购房协议书范本
2014/10/02 职场文书
银行职员工作失误检讨书
2014/10/14 职场文书
继承公证书格式
2015/01/26 职场文书