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 27 Python
python使用正则筛选信用卡
Jan 27 Python
pytest中文文档之编写断言
Sep 12 Python
Python爬虫 urllib2的使用方法详解
Sep 23 Python
基于Python中isfile函数和isdir函数使用详解
Nov 29 Python
python实现处理mysql结果输出方式
Apr 09 Python
django 解决扩展自带User表遇到的问题
May 14 Python
keras 获取某层输出 获取复用层的多次输出实例
May 23 Python
python中adb有什么功能
Jun 07 Python
对python pandas中 inplace 参数的理解
Jun 27 Python
使用Keras建立模型并训练等一系列操作方式
Jul 02 Python
解决numpy数组互换两行及赋值的问题
Apr 17 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 var_dump遍历对象属性的函数与应用代码
2010/06/04 PHP
PHP针对多用户实现更换头像功能
2016/09/04 PHP
PHP的Json中文处理解决方案
2016/09/29 PHP
php版微信小店调用api示例代码
2016/11/12 PHP
PHP面向对象之事务脚本模式(详解)
2017/06/07 PHP
javascript动画效果类封装代码
2007/08/28 Javascript
基于JQuery实现异步刷新的代码(转载)
2011/03/29 Javascript
jQuery过滤选择器:not()方法使用介绍
2014/04/20 Javascript
JavaScript加入收藏夹功能(兼容IE、firefox、chrome)
2014/05/05 Javascript
JS实现简单的顶部定时关闭层效果
2014/06/15 Javascript
浅谈Javascript Base64 加密解密
2014/12/28 Javascript
jQuery实现简洁的导航菜单效果
2015/11/23 Javascript
移动适配的几种方案(三种方案)
2016/11/25 Javascript
微信小程序对接七牛云存储的方法
2017/07/30 Javascript
jquery+css实现简单的图片轮播效果
2017/08/07 jQuery
BootStrap模态框不垂直居中的解决方法
2017/10/19 Javascript
vue和react等项目中更简单的实现展开收起更多等效果示例
2018/02/22 Javascript
jQuery实现碰到边缘反弹的动画效果
2018/02/24 jQuery
运用js实现图层拖拽的功能
2019/05/24 Javascript
微信小程序 数据缓存实现方法详解
2019/08/26 Javascript
JavaScript 作用域scope简单汇总
2019/10/23 Javascript
js数组的基本使用总结
2021/01/18 Javascript
python和shell实现的校验IP地址合法性脚本分享
2014/10/23 Python
Python手机号码归属地查询代码
2016/05/04 Python
python实现关键词提取的示例讲解
2018/04/28 Python
对python实现二维函数高次拟合的示例详解
2018/12/29 Python
python opencv 读取本地视频文件 修改ffmpeg的方法
2019/01/26 Python
详解python statistics模块及函数用法
2019/10/27 Python
Python多线程Threading、子线程与守护线程实例详解
2020/03/24 Python
html5 学习简单的拾色器
2010/09/03 HTML / CSS
html5如何及时更新缓存文件(js、css或图片)
2013/06/24 HTML / CSS
联想墨西哥官方网站:Lenovo墨西哥
2016/08/17 全球购物
2014年电厂工作总结
2014/12/04 职场文书
2016年国庆节宣传标语
2015/11/25 职场文书
python垃圾回收机制原理分析
2022/04/13 Python
win10如何更改appdata文件夹的默认位置?
2022/07/15 数码科技