PyQt5 點選主視窗彈出另乙個視窗

2021-08-21 09:27:20 字數 3150 閱讀 8319

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):

defsetupui

(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")

...

子窗體eyetracking_process.py

from pyqt5 import qtcore, qtgui, qtwidgets

class

ui_dialog

(object):

defsetupui

(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")

...

將驅動函式命名為eyetracking_ui.py

from eyetracking_main import *

from eyetracking_process import *

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__':

window=parentwindow()

child=childwindow()

#通過toolbutton將兩個窗體關聯

btn=window.main_ui.toolbutton

btn.clicked.connect(child.show)

# 顯示

window.show()

因為後續還要在各個窗體操作,因此將主視窗與子視窗各自例項化在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()

通過定義按鈕意義將兩個窗體關聯起來:

參考:

1.pyqt5 多視窗跳轉

2.pyqt5對用qt designer設計的窗體實現彈出子視窗

pyqt5 按鈕 彈出 另外乙個視窗

coding utf 8 import sys from pyqt5.qtcore import pyqtsignal class firstwindow qmainwindow sig pyqtsignal def init self,parent none super firstwindow,s...

PyQt5建立乙個新視窗

1.使用qt design設計乙個空白視窗 注意 我是使用mainwindow建立的視窗 2.使用pyuic將.ui檔案轉換成.py檔案 右鍵.ui檔案 external tools pyuic 3.新建乙個 py檔案,大部分操作函式在 py檔案中,防止重新設計視窗時造成大量 丟失 4.py檔案 c...

第乙個PyQt5視窗

右鍵 external tools qtdesigner 選擇main window建立乙個窗體,從右邊拖動元件到窗體上,儲存路徑到自己的工程目錄下。右鍵.ui檔案 external tools pyuic,自動生成。py檔案 執行這個.py檔案是不會顯示出視窗的 第一步 注釋掉三行 第二步 在這個...