Python 中PyQt5 点击主窗口弹出另一个窗口的实现方法


Posted in Python onJuly 04, 2019

1.先使用Qt designer设计两个窗口,一个是主窗口,一个是子窗口

 

 

其中主窗口是新建-Main Window,子窗口是Dialog窗体。

  两个窗口不能是同一类型,否则会崩溃。

并保存为EyeTracking_main.uiEyeTracking_process.ui(因为我在做眼动追踪,因此窗体命名与此相关,后同),使用UIC工具转成.py文件。

2.写一个驱动函数调用两个窗体

主窗体Eyetracking_main.py

from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_MainWindow(object):
  def setupUi(self, MainWindow):
    MainWindow.setObjectName("MainWindow")
    MainWindow.resize(954, 530)
    self.centralwidget = QtWidgets.QWidget(MainWindow)
    self.centralwidget.setObjectName("centralwidget")
    self.toolButton = QtWidgets.QToolButton(self.centralwidget)
    self.toolButton.setGeometry(QtCore.QRect(10, 40, 101, 25))   self.toolButton.setObjectName("toolButton")
    ...1234567891011

子窗体Eyetracking_process.py

from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_Dialog(object):
  def setupUi(self, Dialog):
    Dialog.setObjectName("Dialog")
    Dialog.resize(810, 474)
    self.label_5 = QtWidgets.QLabel(Dialog)
    self.label_5.setGeometry(QtCore.QRect(630, 90, 151, 151))
    self.label_5.setObjectName("label_5")
    self.label_2 = QtWidgets.QLabel(Dialog)
    self.label_2.setGeometry(QtCore.QRect(250, 90, 171, 161))
    self.label_2.setObjectName
("label_2")
        ...12345678910111213

将驱动函数命名为EyeTracking_ui.py

from Eyetracking_main import *
from Eyetracking_process import *
from PyQt5.QtWidgets import QApplication,QMainWindow,QDialog
import sys
class parentWindow(QMainWindow):
  def __init__(self):
    QMainWindow.__init__(self)
    self.main_ui = Ui_MainWindow()
    self.main_ui.setupUi(self)
class childWindow(QDialog):
  def __init__(self):
    QDialog.__init__(self)
    self.child=Ui_Dialog()
    self.child.setupUi(self)

if __name__=='__main__':
  app=QApplication(sys.argv)
  window=parentWindow()
  child=childWindow()
  #通过toolButton将两个窗体关联
  btn=window.main_ui.toolButton
  btn.clicked.connect(child.show)
  # 显示
  window.show()
  sys.exit(app.exec_())

因为后续还要在各个窗体操作,因此将主窗口与子窗口各自实例化在parentWindowchildWindow两个类中,这两个类各自继承了QMainWindow和QDialog的父类:

class parentWindow(QMainWindow):
  def __init__(self):
    QMainWindow.__init__(self)#QMainWindow的初始化
    self.main_ui = Ui_MainWindow()#主窗口的实例化
    self.main_ui.setupUi(self)
class childWindow(QDialog):
  def __init__(self):
    QDialog.__init__(self)
    self.child=Ui_Dialog()#子窗口的实例化
    self.child.setupUi(self)

后面分别再把两个窗口实例化给window和child:

window=parentWindow()
child=childWindow()

通过定义按钮意义将两个窗体关联起来:

btn=window.main_ui.toolButton
btn.clicked.connect(child.show)

表示当按钮按下时,子窗口显示。

如下图,当点击“处理眼动数据”,弹出处理处理窗体:

Python 中PyQt5 点击主窗口弹出另一个窗口的实现方法

总结

以上所述是小编给大家介绍的Python 中PyQt5 点击主窗口弹出另一个窗口的实现方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Python 相关文章推荐
Python中DJANGO简单测试实例
May 11 Python
举例详解Python中threading模块的几个常用方法
Jun 18 Python
使用Python编写简单的端口扫描器的实例分享
Dec 18 Python
Python3 queue队列模块详细介绍
Jan 05 Python
Python利用公共键如何对字典列表进行排序详解
May 19 Python
Python实现的生产者、消费者问题完整实例
May 30 Python
从0开始的Python学习014面向对象编程(推荐)
Apr 02 Python
33个Python爬虫项目实战(推荐)
Jul 08 Python
Python 3.6打包成EXE可执行程序的实现
Oct 18 Python
Python基于pillow库实现生成图片水印
Sep 14 Python
python opencv肤色检测的实现示例
Dec 21 Python
Python对excel的基本操作方法
Feb 18 Python
Python+opencv 实现图片文字的分割的方法示例
Jul 04 #Python
pandas 使用均值填充缺失值列的小技巧分享
Jul 04 #Python
Python使用sklearn库实现的各种分类算法简单应用小结
Jul 04 #Python
python3.x+pyqt5实现主窗口状态栏里(嵌入)显示进度条功能
Jul 04 #Python
pandas取出重复数据的方法
Jul 04 #Python
Python使用sklearn实现的各种回归算法示例
Jul 04 #Python
python SQLAlchemy的Mapping与Declarative详解
Jul 04 #Python
You might like
基于文本的留言簿
2006/10/09 PHP
php 发送带附件邮件示例
2014/01/23 PHP
php脚本守护进程原理与实现方法详解
2017/07/20 PHP
PHP读取并输出XML文件数据的简单实现方法
2017/12/22 PHP
PHP给前端返回一个JSON对象的实例讲解
2018/05/31 PHP
Laravel5.7框架安装与使用学习笔记图文详解
2019/04/02 PHP
JS 字符串连接[性能比较]
2009/05/10 Javascript
JavaScript DOM 学习第九章 选取范围的介绍
2010/02/19 Javascript
url 编码 js url传参中文乱码解决方案
2010/04/11 Javascript
JavaScript 程序编码规范
2010/11/23 Javascript
如何使用Jquery获取Form表单中被选中的radio值
2013/08/09 Javascript
浅析JavaScript中的事件机制
2015/06/04 Javascript
详解JavaScript ES6中的模板字符串
2015/07/28 Javascript
javascript中setAttribute兼容性用法分析
2016/12/12 Javascript
利用n 升级工具升级Node.js版本及在mac环境下的坑
2017/02/15 Javascript
JavaScript中的toString()和toLocaleString()方法的区别
2017/02/15 Javascript
Vue.directive自定义指令的使用详解
2017/03/10 Javascript
vue项目常用组件和框架结构介绍
2017/12/24 Javascript
浅谈redux, koa, express 中间件实现对比解析
2019/05/23 Javascript
Vue 动态组件components和v-once指令的实现
2019/08/30 Javascript
vue 动态创建组件的两种方法
2020/12/31 Vue.js
[13:16]INFAMOUS vs VGJ T BO3
2018/06/07 DOTA
Python+Pika+RabbitMQ环境部署及实现工作队列的实例教程
2016/06/29 Python
Python基础教程之利用期物处理并发
2018/03/29 Python
Python装饰器原理与用法分析
2018/04/30 Python
使用pandas的DataFrame的plot方法绘制图像的实例
2018/05/24 Python
css3中仿放大镜效果的几种方式原理解析
2020/12/03 HTML / CSS
HTML5 Canvas+JS控制电脑或手机上的摄像头实例
2014/05/03 HTML / CSS
南非领先的在线旅行社:Travelstart南非
2016/09/04 全球购物
设计专业毕业生求职信
2014/06/25 职场文书
重点工程汇报材料
2014/08/27 职场文书
倡议书的写法
2014/08/30 职场文书
班主任2015新年寄语
2014/12/08 职场文书
毕业晚宴祝酒词
2015/08/11 职场文书
银行柜员优质服务心得体会
2016/01/22 职场文书
解决Jupyter-notebook不弹出默认浏览器的问题
2021/03/30 Python