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控制台显示时钟的示例
Feb 24 Python
使用Python编写提取日志中的中文的脚本的方法
Apr 30 Python
Python中operator模块的操作符使用示例总结
Jun 28 Python
python+matplotlib绘制简单的海豚(顶点和节点的操作)
Jan 02 Python
利用Hyperic调用Python实现进程守护
Jan 02 Python
浅谈python中字典append 到list 后值的改变问题
May 04 Python
使用Python开发SQLite代理服务器的方法
Dec 07 Python
Python求两点之间的直线距离(2种实现方法)
Jul 07 Python
python 使用shutil复制图片的例子
Dec 13 Python
使用Python实现牛顿法求极值
Feb 10 Python
jupyter lab文件导出/下载方式
Apr 22 Python
OpenCV-Python使用cv2实现傅里叶变换
Jun 09 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实现获取及设置用户访问页面语言类
2014/09/24 PHP
php浏览历史记录的方法
2015/03/10 PHP
PHP使用内置dir类实现目录遍历删除
2015/03/31 PHP
php将图片文件转换成二进制输出的方法
2015/06/10 PHP
Laravel5框架自定义错误页面配置操作示例
2019/04/17 PHP
DOM精简教程
2006/10/03 Javascript
javascript URL锚点取值方法
2009/02/25 Javascript
jQuery EasyUI 中文API Layout(Tabs)
2010/04/27 Javascript
解析Jquery的LigerUI如何实现文件上传
2013/07/09 Javascript
js获取及修改网页背景色和字体色的方法
2015/12/29 Javascript
学习使用bootstrap基本控件(table、form、button)
2016/04/12 Javascript
js检查是否关闭浏览器的方法
2016/08/02 Javascript
require.js 加载 vue组件 r.js 合并压缩的实例
2016/10/14 Javascript
Bootstrap table使用方法详细介绍
2016/12/09 Javascript
jQuery实现的简单拖动层示例
2017/02/22 Javascript
详解vue父子模版嵌套案例
2017/03/04 Javascript
详解angular2实现ng2-router 路由和嵌套路由
2017/03/24 Javascript
jQuery实现点击下拉框中的值累加到文本框中的方法示例
2017/10/28 jQuery
Node.js调用fs.renameSync报错(Error: EXDEV, cross-device link not permitted)
2017/12/27 Javascript
Js中使用正则表达式验证输入是否有特殊字符
2018/09/07 Javascript
详解如何用typescript开发koa2的二三事
2018/11/13 Javascript
详解微信小程序框架wepy踩坑记录(与vue对比)
2019/03/12 Javascript
ES6基础之 Promise 对象用法实例详解
2019/08/22 Javascript
一行JavaScript代码如何实现瀑布流布局
2020/12/11 Javascript
[29:59]完美世界DOTA2联赛PWL S3 Forest vs access 第二场 12.11
2020/12/13 DOTA
pycharm 使用心得(二)设置字体大小
2014/06/05 Python
Python 详解基本语法_函数_返回值
2017/01/22 Python
详解用python写一个抽奖程序
2019/05/10 Python
python网络爬虫 Scrapy中selenium用法详解
2019/09/28 Python
Python for循环搭配else常见问题解决
2020/02/11 Python
Python类绑定方法及非绑定方法实例解析
2020/10/09 Python
CSS3 渐变(Gradients)之CSS3 线性渐变
2016/07/08 HTML / CSS
妇女干部培训方案
2014/05/12 职场文书
小学社会实践活动总结
2014/07/03 职场文书
2015年幼儿园班务工作总结
2015/05/12 职场文书
办公室主任岗位竞聘书
2015/09/15 职场文书