如何使用 QUiLoader() 和 pyside2 打开新的 window
how to open new window using QUiLoader() with pyside2
我有一个用 qtdesigner 设计的主要 window。当我按下一个按钮时,我想打开一个新的 window。
为此,我认为可以使用 Qt 加载程序函数,因此我编写了这个函数(当我在主 window 中按下按钮时执行此函数)。
def open_new_window(self):
ui_file = QFile('gui/new_window.ui')
ui_file.open(QFile.ReadOnly)
loader = QUiLoader()
self.window = loader.load(ui_file)
ui_file.close()
return
但是当我这样做时,它关闭了程序。有什么问题吗?我可以使用加载程序功能打开我的 uifile 吗?它适用于个性化小部件导入,为什么不能用于新的 window?
编辑:
我稍微改变了函数:
def open_new_window(self):
ui_file = QFile('gui/new_window.ui')
ui_file.open(QFile.ReadOnly)
loader = QUiLoader()
window = loader.load(ui_file)
window.show()
ui_file.close()
return
这次第2个window开门了,但是瞬间关门了...
好的,我知道了。正确的代码是:
def open_new_window(self):
ui_file = QFile('gui/new_window.ui')
ui_file.open(QFile.ReadOnly)
loader = QUiLoader()
self.window2 = loader.load(ui_file)
self.window2.show()
ui_file.close()
return
我改变了什么:
- 我在 window 调用前插入了 "self."。否则,window 会立即关闭,因为函数已结束。有了自我,它仍然活着。
- 我还在 "window2" 中更改了 window 的名称。原因是当我调用我的 main window 时,我已经使用了 "window"。结果它取代了前一个。有了新名字,两者都保持开放!
问候
我有一个用 qtdesigner 设计的主要 window。当我按下一个按钮时,我想打开一个新的 window。 为此,我认为可以使用 Qt 加载程序函数,因此我编写了这个函数(当我在主 window 中按下按钮时执行此函数)。
def open_new_window(self):
ui_file = QFile('gui/new_window.ui')
ui_file.open(QFile.ReadOnly)
loader = QUiLoader()
self.window = loader.load(ui_file)
ui_file.close()
return
但是当我这样做时,它关闭了程序。有什么问题吗?我可以使用加载程序功能打开我的 uifile 吗?它适用于个性化小部件导入,为什么不能用于新的 window?
编辑:
我稍微改变了函数:
def open_new_window(self):
ui_file = QFile('gui/new_window.ui')
ui_file.open(QFile.ReadOnly)
loader = QUiLoader()
window = loader.load(ui_file)
window.show()
ui_file.close()
return
这次第2个window开门了,但是瞬间关门了...
好的,我知道了。正确的代码是:
def open_new_window(self):
ui_file = QFile('gui/new_window.ui')
ui_file.open(QFile.ReadOnly)
loader = QUiLoader()
self.window2 = loader.load(ui_file)
self.window2.show()
ui_file.close()
return
我改变了什么: - 我在 window 调用前插入了 "self."。否则,window 会立即关闭,因为函数已结束。有了自我,它仍然活着。 - 我还在 "window2" 中更改了 window 的名称。原因是当我调用我的 main window 时,我已经使用了 "window"。结果它取代了前一个。有了新名字,两者都保持开放!
问候