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获得时间的实例说明
Mar 25 Python
Python文件夹与文件的操作实现代码
Jul 13 Python
python实现堆栈与队列的方法
Jan 15 Python
将Django使用的数据库从MySQL迁移到PostgreSQL的教程
Apr 11 Python
python实现合并两个数组的方法
May 16 Python
python实现中文转换url编码的方法
Jun 14 Python
Python 切分数组实例解析
Nov 07 Python
基于Tensorflow批量数据的输入实现方式
Feb 05 Python
Python MySQLdb 执行sql语句时的参数传递方式
Mar 04 Python
python 自定义异常和主动抛出异常(raise)的操作
Dec 11 Python
秀!学妹看见都惊呆的Python小招数!【详细语言特性使用技巧】
Apr 27 Python
Python破解极验滑动验证码详细步骤
May 21 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
手把手教你使用DedeCms V3的在线采集图文教程
2007/04/03 PHP
cmd下运行php脚本
2008/11/25 PHP
PHP学习之字符串比较和查找
2011/04/17 PHP
利用PHP脚本在Linux下用md5函数加密字符串的方法
2015/06/29 PHP
PHP语言对接抖音快手小红书视频/图片去水印API接口源码
2020/08/11 PHP
用javascript获取textarea中的光标位置
2008/05/06 Javascript
jquery 获取json数据实现代码
2009/04/27 Javascript
JavaScript 加号(+)运算符号
2009/12/06 Javascript
jquery调用asp.net 页面后台的实现代码
2011/04/27 Javascript
js利用数组length属性清空和截短数组的小例子
2014/01/15 Javascript
js判断图片加载完成后获取图片实际宽高的方法
2016/02/25 Javascript
拥有一个属于自己的javascript表单验证插件
2016/03/24 Javascript
基于JavaScript实现点击页面任何位置返回
2016/08/31 Javascript
vue.js学习之递归组件
2016/12/13 Javascript
原生Javascript插件开发实践
2017/01/18 Javascript
jQuery简单获取DIV和A标签元素位置的方法
2017/02/07 Javascript
微信小程序动态的加载数据实例代码
2017/04/14 Javascript
js实现轮播图的两种方式(构造函数、面向对象)
2017/09/30 Javascript
使用vue官方提供的模板vue-cli搭建一个helloWorld案例分析
2018/01/16 Javascript
vue实现底部菜单功能
2018/07/24 Javascript
小程序实现上下移动切换位置
2019/09/23 Javascript
Vue生命周期activated之返回上一页不重新请求数据操作
2020/07/26 Javascript
[02:44]完美大师赛主赛事淘汰赛第二日观众采访
2017/11/24 DOTA
[01:07:13]TNC vs Pain 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
python使用append合并两个数组的方法
2015/04/28 Python
Python判断列表是否已排序的各种方法及其性能分析
2016/06/20 Python
pycharm修改文件的默认打开方式的步骤
2019/07/29 Python
Python3 xml.etree.ElementTree支持的XPath语法详解
2020/03/06 Python
Python中的With语句的使用及原理
2020/07/29 Python
使用css3制作登录表单的步骤
2014/04/07 HTML / CSS
英文版区域经理求职信
2013/10/23 职场文书
小学生优秀评语大全
2014/04/22 职场文书
基层领导干部“四风”问题批评与自我批评
2014/09/23 职场文书
python基础之函数的定义和调用
2021/10/24 Python
SONY600GR,国产收音机厂商永远的痛
2022/04/05 无线电
微信告警的zabbix监控系统 监控整个NGINX集群
2022/04/18 Servers