Python 中PyQt5 點(diǎn)擊主窗口彈出另一個(gè)窗口的實(shí)現(xiàn)方法
1.先使用Qt designer設(shè)計(jì)兩個(gè)窗口,一個(gè)是主窗口,一個(gè)是子窗口
![]() |
其中主窗口是新建-Main Window,子窗口是Dialog窗體。
兩個(gè)窗口不能是同一類型,否則會(huì)崩潰。
并保存為EyeTracking_main.ui和EyeTracking_process.ui(因?yàn)槲以谧鲅蹌?dòng)追蹤,因此窗體命名與此相關(guān),后同),使用UIC工具轉(zhuǎn)成.py文件。
2.寫一個(gè)驅(qū)動(dòng)函數(shù)調(diào)用兩個(gè)窗體
主窗體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
將驅(qū)動(dòng)函數(shù)命名為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將兩個(gè)窗體關(guān)聯(lián)
btn=window.main_ui.toolButton
btn.clicked.connect(child.show)
# 顯示
window.show()
sys.exit(app.exec_())
因?yàn)楹罄m(xù)還要在各個(gè)窗體操作,因此將主窗口與子窗口各自實(shí)例化在parentWindow和childWindow兩個(gè)類中,這兩個(gè)類各自繼承了QMainWindow和QDialog的父類:
class parentWindow(QMainWindow):
def __init__(self):
QMainWindow.__init__(self)#QMainWindow的初始化
self.main_ui = Ui_MainWindow()#主窗口的實(shí)例化
self.main_ui.setupUi(self)
class childWindow(QDialog):
def __init__(self):
QDialog.__init__(self)
self.child=Ui_Dialog()#子窗口的實(shí)例化
self.child.setupUi(self)
后面分別再把兩個(gè)窗口實(shí)例化給window和child:
window=parentWindow() child=childWindow()
通過定義按鈕意義將兩個(gè)窗體關(guān)聯(lián)起來:
btn=window.main_ui.toolButton btn.clicked.connect(child.show)
表示當(dāng)按鈕按下時(shí),子窗口顯示。
如下圖,當(dāng)點(diǎn)擊“處理眼動(dòng)數(shù)據(jù)”,彈出處理處理窗體:

總結(jié)
以上所述是小編給大家介紹的Python 中PyQt5 點(diǎn)擊主窗口彈出另一個(gè)窗口的實(shí)現(xiàn)方法,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
如果你覺得本文對(duì)你有幫助,歡迎轉(zhuǎn)載,煩請(qǐng)注明出處,謝謝!
相關(guān)文章
Python中高效抓取數(shù)據(jù)的實(shí)戰(zhàn)指南
在數(shù)據(jù)驅(qū)動(dòng)的時(shí)代,網(wǎng)絡(luò)爬蟲已成為獲取信息的核心工具,本文將用通俗的語言,帶您掌握Python爬蟲結(jié)合代理IP抓取數(shù)據(jù)的全流程,希望對(duì)大家有一定的幫助2025-04-04
詳解Python如何實(shí)現(xiàn)尾遞歸優(yōu)化
尾遞歸是函數(shù)返回最后一個(gè)操作是遞歸調(diào)用,則該函數(shù)是尾遞歸。本文將介紹Python是如何實(shí)現(xiàn)尾遞歸優(yōu)化的,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2022-05-05
Python3自動(dòng)簽到 定時(shí)任務(wù) 判斷節(jié)假日的實(shí)例
今天小編就為大家分享一篇Python3自動(dòng)簽到 定時(shí)任務(wù) 判斷節(jié)假日的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-11-11
Python結(jié)合MySQL數(shù)據(jù)庫編寫簡單信息管理系統(tǒng)完整實(shí)例
最近Python課堂上布置了綜合實(shí)訓(xùn),實(shí)驗(yàn)?zāi)繕?biāo)是設(shè)計(jì)一個(gè)信息管理系統(tǒng),下面這篇文章主要給大家介紹了關(guān)于Python結(jié)合MySQL數(shù)據(jù)庫編寫簡單信息管理系統(tǒng)的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-06-06
python網(wǎng)絡(luò)爬蟲之模擬登錄 自動(dòng)獲取cookie值 驗(yàn)證碼識(shí)別的具體實(shí)現(xiàn)
有時(shí),我們需要爬取一些基于個(gè)人用戶的用戶信息(需要登陸后才可以查看)就要進(jìn)行模擬登陸,因?yàn)轵?yàn)證碼往往是作為登陸請(qǐng)求中的請(qǐng)求參數(shù)被使用,就需要識(shí)別驗(yàn)證碼2021-09-09
python神經(jīng)網(wǎng)絡(luò)InceptionV3模型復(fù)現(xiàn)詳解
這篇文章主要為大家介紹了python神經(jīng)網(wǎng)絡(luò)InceptionV3模型復(fù)現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪<BR>2022-05-05


