2017-04-10 135 views
0

我想添加啓動窗口,當我點擊按鈕時,它會打開另一個窗口並關閉當前窗口。對於每個窗口,它都有以.ui形式從Qt Designer創建的分離的UI。PyQt:如何從Qt Designer加載多個.ui文件

我通過uic.loadUiType()加載兩個.ui文件。第一個窗口(第一個UI)通常可以顯示其UI,但是當我單擊按鈕轉到另一個窗口時,另一個UI(第二個UI)不起作用。它喜歡打開空白窗口。另一個問題是,如果我加載第一個UI然後更改爲第二個UI(刪除該類並更改爲另一個類,同時刪除uic.loadUiType()),則第二個UI仍然不起作用(顯示空白窗口)

請幫忙...我在創建這個問題之前研究,但找不到答案。

這是我的代碼。我該如何解決它?

import sys 
from PyQt5.QtWidgets import QApplication, QWidget 
from PyQt5.QtGui import QIcon 
from PyQt5 import uic 

#load both ui file 
uifile_1 = 'UI/openPage.ui' 
form_1, base_1 = uic.loadUiType(uifile_1) 

uifile_2 = 'UI/mainPage.ui' 
form_2, base_2 = uic.loadUiType(uifile_2) 

class Example(base_1, form_1): 
    def __init__(self): 
     super(base_1,self).__init__() 
     self.setupUi(self) 
     self.startButton.clicked.connect(self.change) 

    def change(self): 
     self.main = MainPage() 
     self.main.show() 

class MainPage(base_2, form_2): 
    def __int__(self): 
     super(base_2, self).__init__() 
     self.setupUi(self) 

if __name__ == '__main__': 
    app = QApplication(sys.argv) 
    ex = Example() 
    ex.show() 
    sys.exit(app.exec_()) 
+0

更改'def __int __(self):'def'__init __(self):' – eyllanesc

回答

0

首先,你有一個錯誤,你必須改變__int____init__。關閉窗口請撥打close()方法。

import sys 
from PyQt5.QtWidgets import QApplication, QWidget 
from PyQt5.QtGui import QIcon 
from PyQt5 import uic 

#load both ui file 
uifile_1 = 'UI/openPage.ui' 
form_1, base_1 = uic.loadUiType(uifile_1) 

uifile_2 = 'UI/mainPage.ui' 
form_2, base_2 = uic.loadUiType(uifile_2) 

class Example(base_1, form_1): 
    def __init__(self): 
     super(base_1,self).__init__() 
     self.setupUi(self) 
     self.startButton.clicked.connect(self.change) 

    def change(self): 
     self.main = MainPage() 
     self.main.show() 
     self.close() 

class MainPage(base_2, form_2): 
    def __init__(self): 
     super(base_2, self).__init__() 
     self.setupUi(self) 

if __name__ == '__main__': 
    app = QApplication(sys.argv) 
    ex = Example() 
    ex.show() 
    sys.exit(app.exec_()) 
+0

謝謝!!!我浪費了很多時間來尋找解決方案。非常感謝。 – bgizzard