如何使用 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"。结果它取代了前一个。有了新名字,两者都保持开放!

问候