我想添加启动窗口,当我点击按钮时,它会打开另一个窗口并关闭当前窗口。对于每个窗口,它都有一个独立的UI,它是以.ui形式从Qt Designer创建的。
我通过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 :(得分:6)
首先出现错误,您必须将__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_())