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简单猜数游戏实例
Jul 09 Python
完美解决python遍历删除字典里值为空的元素报错问题
Sep 11 Python
利用Python实现颜色色值转换的小工具
Oct 27 Python
python实现Dijkstra静态寻路算法
Jan 17 Python
实例介绍Python中整型
Feb 11 Python
python 使用turtule绘制递归图形(螺旋、二叉树、谢尔宾斯基三角形)
May 30 Python
PyQt5图形界面播放音乐的实例
Jun 17 Python
python超时重新请求解决方案
Oct 21 Python
Python实现i人事自动打卡的示例代码
Jan 09 Python
Python使用20行代码实现微信聊天机器人
Jun 05 Python
Python GUI之tkinter窗口视窗教程大集合(推荐)
Oct 20 Python
python爬虫线程池案例详解(梨视频短视频爬取)
Feb 20 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将access数据库转换到mysql数据库的方法
2014/12/24 PHP
laravel创建类似ThinPHP中functions.php的全局函数
2016/11/26 PHP
Laravel框架路由和控制器的绑定操作方法
2018/06/12 PHP
thinkPHP5框架实现多数据库连接,跨数据连接查询操作示例
2019/05/29 PHP
基于jQuery的图片剪切插件
2011/08/03 Javascript
js字符串的各种格式的转换 ToString,Format
2011/08/08 Javascript
jQuery ajax(复习)—Baidu ajax request分离版
2013/01/24 Javascript
jquery基础教程之数组使用详解
2014/03/10 Javascript
javascript事件冒泡详解和捕获、阻止方法
2014/04/12 Javascript
基于javascript实现右下角浮动广告效果
2016/01/08 Javascript
浅谈Web页面向后台提交数据的方式和选择
2016/09/23 Javascript
从零学习node.js之详解异步控制工具async(八)
2017/02/27 Javascript
JS 实现banner图片轮播效果(鼠标事件)
2017/08/04 Javascript
vue watch关于对象内的属性监听
2019/04/22 Javascript
微信小程序 scroll-view 水平滚动实现过程解析
2019/10/12 Javascript
JavaScript 装逼指南(js另类写法)
2020/05/10 Javascript
vue使用axios实现excel文件下载的功能
2020/07/16 Javascript
ES6 十大特性简介
2020/12/09 Javascript
[00:34]拔城逐梦,热血永恒!2020(秋)完美世界城市挑战赛报名开启
2020/10/09 DOTA
python采集百度百科的方法
2015/06/05 Python
Python编程实现控制cmd命令行显示颜色的方法示例
2017/08/14 Python
Python中pow()和math.pow()函数用法示例
2018/02/11 Python
tensorflow入门之训练简单的神经网络方法
2018/02/26 Python
详解python如何在django中为用户模型添加自定义权限
2018/10/15 Python
Python之使用adb shell命令启动应用的方法详解
2019/01/07 Python
Django学习笔记之为Model添加Action
2019/04/30 Python
Python各种扩展名区别点整理
2020/02/27 Python
PyTorch中torch.tensor与torch.Tensor的区别详解
2020/05/18 Python
使用keras实现Precise, Recall, F1-socre方式
2020/06/15 Python
pycharm中使用request和Pytest进行接口测试的方法
2020/07/31 Python
商务助理求职信范文
2014/04/20 职场文书
英语一分钟演讲稿
2014/04/29 职场文书
小学六年级班主任工作经验交流材料
2015/11/02 职场文书
2016小学优秀教师先进事迹材料
2016/02/26 职场文书
毕业生的自我鉴定表范文
2019/05/16 职场文书
使用JS实现简易计算器
2021/06/14 Javascript