2017-04-10 7 views
0

ボタンをクリックすると別のウィンドウが開き、現在のウィンドウを閉じるスタートアップウィンドウを追加します。各ウィンドウには、QUIデザイナーから.ui形式で作成された分離されたUIがあります。PyQt:Qtデザイナーから複数の.uiファイルをロードする方法

両方の.uiファイルをuic.loadUiType()経由で読み込みます。最初のウィンドウ(最初のUI)は通常UIを表示できますが、ボタンをクリックして別のウィンドウに移動すると別のUI(2番目のUI)は機能しません。それは空白のウィンドウを開くのが好きです。

別の問題は、最初のUIを読み込んでから2番目のUIに変更して(そのクラスを削除して別のクラスに変更し、uic.loadUiType()も削除する)、2番目の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

変更 'デフ__int __(自己):'へ 'デフ__init __(自己):' – eyllanesc

答えて

0

まず、あなたは__init____int__を変更する必要があります。ウィンドウを閉じるには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

関連する問題