1.先使用Qt designer設計兩個窗口,一個是主窗口,一個是子窗口
?
![]() |
? |
其中主窗口是新建-Main Window,子窗口是Dialog窗體。
? 兩個窗口不能是同一類型,否則會崩潰。
并保存為
EyeTracking_main.ui
和
EyeTracking_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_())
因為后續還要在各個窗體操作,因此將主窗口與子窗口各自實例化在
parentWindow
和
childWindow
兩個類中,這兩個類各自繼承了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 點擊主窗口彈出另一個窗口的實現方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!
如果你覺得本文對你有幫助,歡迎轉載,煩請注明出處,謝謝!
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
