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字符串,数值计算
Oct 05 Python
Python中is与==判断的区别
Mar 28 Python
python实现朴素贝叶斯分类器
Mar 28 Python
Python3.6笔记之将程序运行结果输出到文件的方法
Apr 22 Python
Python基础之条件控制操作示例【if语句】
Mar 23 Python
对pyqt5之menu和action的使用详解
Jun 20 Python
使用APScheduler3.0.1 实现定时任务的方法
Jul 22 Python
Django错误:TypeError at / 'bool' object is not callable解决
Aug 16 Python
python 将视频 通过视频帧转换成时间实例
Apr 23 Python
keras实现基于孪生网络的图片相似度计算方式
Jun 11 Python
python调用win32接口进行截图的示例
Nov 11 Python
python scipy 稀疏矩阵的使用说明
May 26 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
php实现utf-8和GB2312编码相互转换函数代码
2013/02/07 PHP
php中的常用魔术方法总结
2013/08/02 PHP
Yii2 输出xml格式数据的方法
2016/05/03 PHP
Yii2中cookie用法示例分析
2016/07/18 PHP
php中类和对象:静态属性、静态方法
2017/04/09 PHP
关于 Laravel Redis 多个进程同时取队列问题详解
2017/12/25 PHP
Laravel 框架返回状态拦截代码
2019/10/18 PHP
php设计模式之正面模式实例分析【星际争霸游戏案例】
2020/03/24 PHP
Javascript 继承机制实例
2009/08/12 Javascript
Jquery乱码的一次解决过程 图解教程
2010/02/20 Javascript
手把手教你自己写一个js表单验证框架的方法
2010/09/14 Javascript
jquery 删除cookie失效的解决方法
2013/11/12 Javascript
浅析offsetLeft,Left,clientLeft之间的区别
2013/11/30 Javascript
js style动态设置table高度
2014/10/21 Javascript
Jquery Ajax Error 调试错误的技巧
2015/11/20 Javascript
基于javascript制作微博发布栏效果
2016/04/04 Javascript
分享JS代码实现鼠标放在输入框上输入框和图片同时更换样式
2016/09/01 Javascript
原生js实现鼠标跟随效果
2017/02/28 Javascript
使用vue构建一个上传图片表单
2017/07/04 Javascript
详解Angular5 服务端渲染实战
2018/01/04 Javascript
Vue组件开发技巧总结
2018/03/04 Javascript
Node.js 实现远程桌面监控的方法步骤
2019/07/02 Javascript
微信小程序 轮播图实现原理及优化详解
2019/09/29 Javascript
vue列表数据发生变化指令没有更新问题及解决方法
2020/01/16 Javascript
[01:27:43]VGJ.S vs TNC Supermajor 败者组 BO3 第三场 6.6
2018/06/07 DOTA
[46:12]完美世界DOTA2联赛循环赛 DM vs Matador BO2第一场 11.04
2020/11/04 DOTA
解决python cv2.imread 读取中文路径的图片返回为None的问题
2020/06/02 Python
Chain Reaction Cycles俄罗斯:世界上最大的在线自行车商店
2019/08/27 全球购物
皇家阿尔伯特瓷器美国官网:Royal Albert美国
2020/02/16 全球购物
《散步》教学反思
2014/03/02 职场文书
学习党的群众路线教育实践活动剖析材料
2014/10/13 职场文书
幼儿学前班评语
2014/12/29 职场文书
2015年行政人事工作总结
2015/05/21 职场文书
保险公司岗前培训工作总结
2015/10/24 职场文书
导游词之淮安明祖陵
2019/11/25 职场文书
MySQL中的全表扫描和索引树扫描
2022/05/15 MySQL