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 相关文章推荐
wxPython窗口中文乱码解决方法
Oct 11 Python
python处理csv数据的方法
Mar 11 Python
Python算法应用实战之队列详解
Feb 04 Python
django加载本地html的方法
May 27 Python
Django 限制用户访问频率的中间件的实现
Aug 23 Python
Python日志模块logging基本用法分析
Aug 23 Python
Python从文件中读取数据的方法讲解
Feb 14 Python
python Elasticsearch索引建立和数据的上传详解
Aug 04 Python
Python collections模块使用方法详解
Aug 28 Python
tensorflow的ckpt及pb模型持久化方式及转化详解
Feb 12 Python
Python实现屏幕录制功能的代码
Mar 02 Python
浅析python中的del用法
Sep 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
PHPMailer邮件发送的实现代码
2013/05/04 PHP
php 解压rar文件及zip文件的方法
2014/05/05 PHP
PHP OPP机制和模式简介(抽象类、接口和契约式编程)
2014/06/09 PHP
十大使用PHP框架的理由
2015/09/26 PHP
PHP正则表达式匹配替换与分割功能实例浅析
2017/02/04 PHP
javascript firefox 自动加载iframe 自动调整高宽示例
2013/08/27 Javascript
网页禁用右键菜单和鼠标拖动选择方法小结
2015/02/25 Javascript
javascript实现checkbox全选的代码
2015/04/30 Javascript
javascript中DOM复选框选择用法实例
2015/05/14 Javascript
在JavaScript中操作时间之getYear()方法的使用教程
2015/06/11 Javascript
jQuery简单获取键盘事件的方法
2016/01/22 Javascript
jQuery实现的网格线绘制方法
2016/06/20 Javascript
解析JavaScript数组方法reduce
2016/12/12 Javascript
Vuejs仿网易云音乐实现听歌及搜索功能
2017/03/30 Javascript
Require.js的基本用法详解
2017/07/03 Javascript
JavaScript继承的特性与实践应用深入详解
2018/12/30 Javascript
原生javascript的ajax请求及后台PHP响应操作示例
2020/02/24 Javascript
JavaScript原生数组函数实例汇总
2020/10/14 Javascript
微信小程序自定义胶囊样式
2020/12/27 Javascript
vue集成一个支持图片缩放拖拽的富文本编辑器
2021/01/29 Vue.js
python使用7z解压apk包的方法
2015/04/18 Python
深入理解Python单元测试unittest的使用示例
2017/11/18 Python
python 读取DICOM头文件的实例
2018/05/07 Python
Python过滤txt文件内重复内容的方法
2018/10/21 Python
Python @property及getter setter原理详解
2020/03/31 Python
python爬虫多次请求超时的几种重试方法(6种)
2020/12/01 Python
巴西家用小家电购物网站:Polishop
2016/08/07 全球购物
美国知名眼镜网站:Target Optical
2020/04/04 全球购物
个人简历中的自我评价怎么写
2014/01/26 职场文书
应届毕业生简历自我评价
2014/01/31 职场文书
转正申请报告格式
2015/05/15 职场文书
初一数学教学反思
2016/02/17 职场文书
七年级思品教学反思
2016/02/20 职场文书
Idea连接MySQL数据库出现中文乱码的问题
2021/04/14 MySQL
解决numpy数组互换两行及赋值的问题
2021/04/17 Python
Python Django框架介绍之模板标签及模板的继承
2021/05/27 Python