PyQt:如何从Qt Designer加载多个.ui文件

6
我想添加一个启动窗口,当我点击按钮时,它会打开另一个窗口并关闭当前窗口。对于每个窗口,它都有单独的UI,是通过Qt Designer在.ui表单中创建的。
我使用加载了两个.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_())
1个回答

10

首先,你有一个错误,你必须将__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_())

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接