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 相关文章推荐
linux系统使用python监控apache服务器进程脚本分享
Jan 15 Python
Python正则表达式教程之三:贪婪/非贪婪特性
Mar 02 Python
python生成excel的实例代码
Nov 08 Python
Python金融数据可视化汇总
Nov 17 Python
Python实现可获取网易页面所有文本信息的网易网络爬虫功能示例
Jan 15 Python
python安装教程
Feb 28 Python
详解安装mitmproxy以及遇到的坑和简单用法
Jan 21 Python
解决Python内层for循环如何break出外层的循环的问题
Jun 24 Python
浅谈tensorflow中Dataset图片的批量读取及维度的操作详解
Jan 20 Python
PyQt5事件处理之定时在控件上显示信息的代码
Mar 25 Python
python 两种方法删除空文件夹
Sep 29 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/07/02 PHP
浅谈PHP的数据库接口和技术
2016/12/09 PHP
jquery获取input的value问题说明
2010/08/19 Javascript
关于在IE下的一个安全BUG --可用于跟踪用户的系统鼠标位置
2013/04/17 Javascript
JavaScript实现文字跟随鼠标特效
2015/08/06 Javascript
JavaScript利用HTML DOM进行文档操作的方法
2016/03/28 Javascript
详解vue 中使用 AJAX获取数据的方法
2017/01/18 Javascript
vue3.0 CLI - 1 - npm 安装与初始化的入门教程
2018/09/14 Javascript
webpack4.0 入门实践教程
2018/10/08 Javascript
JavaScript数据结构与算法之检索算法实例分析【顺序查找、最大最小值、自组织查询】
2019/02/22 Javascript
JavaScript中filter的用法实例分析
2019/02/27 Javascript
详解Vue底部导航栏组件
2019/05/02 Javascript
layui监听工具栏的实例(操作列表按钮)
2019/09/10 Javascript
微信js-sdk 录音功能的示例代码
2019/11/01 Javascript
antd Select下拉菜单动态添加option里的内容操作
2020/11/02 Javascript
vant自定义二级菜单操作
2020/11/02 Javascript
Python实现方便使用的级联进度信息实例
2015/05/05 Python
python实现视频分帧效果
2019/05/31 Python
Python求解正态分布置信区间教程
2019/11/20 Python
Python解释器以及PyCharm的安装教程图文详解
2020/02/26 Python
Python列表去重复项的N种方法(实例代码)
2020/05/12 Python
浅谈pytorch 模型 .pt, .pth, .pkl的区别及模型保存方式
2020/05/25 Python
CSS3 Media Queries(响应式布局可以让你定制不同的分辨率和设备)
2013/06/06 HTML / CSS
CSS3制作炫酷带方向感应的鼠标滑过图片3D动画
2016/03/16 HTML / CSS
mysql的最长数据库名,表名,字段名可以是多长
2014/04/21 面试题
八年级生物教学反思
2014/01/22 职场文书
网吧最新创业计划书范文
2014/03/27 职场文书
大学生村官座谈会发言材料
2014/05/25 职场文书
班级课外活动总结
2014/07/09 职场文书
职工擅自离岗检讨书
2014/09/23 职场文书
2014年度思想工作总结
2014/11/27 职场文书
2015国际残疾人日活动总结
2015/03/24 职场文书
关于社会实践的心得体会(2016最新版)
2016/01/25 职场文书
七年级生物教学反思
2016/02/20 职场文书
九年级化学教学反思
2016/02/22 职场文书
如何判断pytorch是否支持GPU加速
2021/06/01 Python