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

 更新时间:2019年07月04日 11:32:24   作者:黄辣鸡  
这篇文章主要介绍了Python 中PyQt5 点击主窗口弹出另一个窗口的实现方法,本文代码实例图文相结合的形式给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下

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 点击主窗口弹出另一个窗口的实现方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

相关文章

  • tensorflow中Dense函数的具体使用

    tensorflow中Dense函数的具体使用

    本文主要介绍了tensorflow中Dense函数的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-03-03
  • Python datetime 如何处理时区信息

    Python datetime 如何处理时区信息

    这篇文章主要介绍了Python datetime 如何处理时区信息,帮助大家更好的用python 处理时间,感兴趣的朋友可以了解下。
    2020-09-09
  • Python基于list的append和pop方法实现堆栈与队列功能示例

    Python基于list的append和pop方法实现堆栈与队列功能示例

    这篇文章主要介绍了Python基于list的append和pop方法实现堆栈与队列功能,结合实例形式分析了Python使用list定义及使用队列的相关操作技巧,需要的朋友可以参考下
    2017-07-07
  • Python在线运行代码助手

    Python在线运行代码助手

    Python代码运行助手可以让你在线输入Python代码,然后通过本机运行的一个Python脚本来执行代码
    2016-07-07
  • python3 os进行嵌套操作的实例讲解

    python3 os进行嵌套操作的实例讲解

    在本篇文章里小编给大家整理了关于python3 os进行嵌套操作的实例内容,有兴趣的朋友们可以学习下。
    2020-11-11
  • python实现图片加文字水印OPenCV和PIL库

    python实现图片加文字水印OPenCV和PIL库

    本文来为大家介绍一下,使用python中的库实现给图片添加文字水印,openCV可以给图片添加水印,如果要添加汉字水印那就要使用PIL库
    2021-09-09
  • pyqt5打包成exe可执行文件的方法

    pyqt5打包成exe可执行文件的方法

    最近做了一个窗口程序,那么能不能将其生成一个可执行文件,本文就介绍一下pyqt5打包成exe可执行文件的方法,感兴趣的可以了解一下
    2021-05-05
  • Python根据欧拉角求旋转矩阵的实例

    Python根据欧拉角求旋转矩阵的实例

    今天小编就为大家分享一篇Python根据欧拉角求旋转矩阵的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-01-01
  • 解决python报错ImportError:urllib3 v2.0 only supports OpenSSL 1.1.1+

    解决python报错ImportError:urllib3 v2.0 only supports OpenSSL

    这篇文章主要介绍了解决python报错ImportError:urllib3 v2.0 only supports OpenSSL 1.1.1+的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2023-12-12
  • Python中的numpy数组维度扩展详解

    Python中的numpy数组维度扩展详解

    这篇文章主要介绍了Python中的numpy数组维度扩展详解,在numpy数组中,切片功能非常常用,例如x[:]表示取x的所有元素,可以通过在切片中增加None或者np.newaxis实现,它们的作用就是在相应的位置上增加一个维度,在这个维度上只有一个元素,需要的朋友可以参考下
    2023-09-09

最新评论