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 正则式 概述及常用字符
May 07 Python
python实现socket端口重定向示例
Feb 10 Python
Python中使用第三方库xlrd来写入Excel文件示例
Apr 05 Python
Python下的subprocess模块的入门指引
Apr 16 Python
python动态加载包的方法小结
Apr 18 Python
python如何实现内容写在图片上
Mar 23 Python
Python发送邮件测试报告操作实例详解
Dec 08 Python
在PYQT5中QscrollArea(滚动条)的使用方法
Jun 14 Python
python设置环境变量的作用整理
Feb 17 Python
Tensorflow之MNIST CNN实现并保存、加载模型
Jun 17 Python
Scrapy中如何向Spider传入参数的方法实现
Sep 28 Python
python代码实现图书管理系统
Nov 30 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
与数据库连接
2006/10/09 PHP
php上传图片并压缩的实现方法
2015/12/22 PHP
详解WordPress中用于更新和获取用户选项数据的PHP函数
2016/03/08 PHP
实例讲解PHP中使用命名空间
2019/01/27 PHP
jquery动态加载图片数据练习代码
2011/08/04 Javascript
在Windows上安装Node.js模块的方法
2011/09/25 Javascript
javascript实现动态侧边栏代码
2014/02/19 Javascript
深入理解JavaScript系列(39):设计模式之适配器模式详解
2015/03/04 Javascript
JS实现不规则TAB选项卡效果代码
2015/09/16 Javascript
javascript实现tab切换的四种方法
2015/11/05 Javascript
第二篇Bootstrap起步
2016/06/21 Javascript
JavaScript 完成注册页面表单校验的实例
2017/08/19 Javascript
jQuery实现可兼容IE6的滚动监听功能
2017/09/20 jQuery
解决Vue中mounted钩子函数获取节点高度出错问题
2018/05/18 Javascript
vue2.0获取鼠标位置的方法
2018/09/13 Javascript
改变layer confirm弹窗按钮的颜色方法
2019/09/12 Javascript
前端性能优化建议
2020/09/17 Javascript
python更新列表的方法
2015/07/28 Python
Python和C/C++交互的几种方法总结
2017/05/11 Python
使用Template格式化Python字符串的方法
2019/01/22 Python
python selenium 弹出框处理的实现
2019/02/26 Python
Python页面加载的等待方式总结
2021/02/28 Python
使用CSS3实现一个3D相册效果实例
2016/12/03 HTML / CSS
HTML5本地存储之Database Storage应用介绍
2013/01/06 HTML / CSS
美国最大的宠物用品零售商:PetSmart
2016/11/14 全球购物
美国在线珠宝商店:SZUL
2017/02/11 全球购物
美国NBA官方商店:NBA Store
2019/04/12 全球购物
傲盾软件面试题
2015/08/17 面试题
畜牧兽医本科生个人的自我评价
2013/10/11 职场文书
文明礼仪小标兵事迹
2014/01/12 职场文书
自荐信需注意事项
2014/01/25 职场文书
特色冷饮店创业计划书
2014/01/28 职场文书
辞职书格式样本
2015/02/26 职场文书
劳动仲裁撤诉申请书
2015/05/18 职场文书
关于元旦的广播稿2016
2015/12/17 职场文书
MySQL 外键约束和表关系相关总结
2021/06/20 MySQL