PyQt:如何从 Qt Designer 加载多个 .ui 文件
PyQt: how to load multiple .ui Files from Qt Designer
我想添加启动 window,当我单击按钮时,它将打开另一个 window 并关闭当前 window。对于每个 window,它都以 .ui 形式从 Qt Designer 创建的 UI 中分离出来。
我通过 uic.loadUiType()
加载了两个 .ui 文件。第一个 window(第一个 UI) 可以正常显示它的 UI 但是当我点击按钮去另一个 window, 另一个 UI (第二个 UI) 不起作用。它喜欢打开空白window。
另一个问题是,如果我先加载 UI 然后更改为第二个 UI(删除 Class 并更改为另一个 Class,同时删除 uic.loadUiType()), 第二个UI还是不行(show blank window)
请帮忙...我在创建这个问题之前进行了研究,但找不到答案。
这是我的代码。我该如何解决?
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_())
首先你出错了,必须把__int__
改成__init__
。要关闭 window 调用 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_())
我想添加启动 window,当我单击按钮时,它将打开另一个 window 并关闭当前 window。对于每个 window,它都以 .ui 形式从 Qt Designer 创建的 UI 中分离出来。
我通过 uic.loadUiType()
加载了两个 .ui 文件。第一个 window(第一个 UI) 可以正常显示它的 UI 但是当我点击按钮去另一个 window, 另一个 UI (第二个 UI) 不起作用。它喜欢打开空白window。
另一个问题是,如果我先加载 UI 然后更改为第二个 UI(删除 Class 并更改为另一个 Class,同时删除 uic.loadUiType()), 第二个UI还是不行(show blank window)
请帮忙...我在创建这个问题之前进行了研究,但找不到答案。
这是我的代码。我该如何解决?
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_())
首先你出错了,必须把__int__
改成__init__
。要关闭 window 调用 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_())