【问题标题】:how to open new window using QUiLoader() with pyside2如何使用带有 pyside2 的 QUiLoader() 打开新窗口
【发布时间】:2020-06-05 22:39:40
【问题描述】:

我有一个使用 qtdesigner 设计的主窗口。当我按下一个按钮时,我想打开一个新窗口。 为此,我认为可以使用 Qt 加载器函数,我编写了这个函数(当我在主窗口中按下按钮时执行此函数)。

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 吗?它适用于个性化小部件导入,为什么不适用于新窗口?

编辑:

我稍微改变了函数:

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

这次第二个窗口打开了,但是瞬间关闭了……

【问题讨论】:

    标签: python python-3.x pyside2


    【解决方案1】:

    好的,我明白了。正确的代码是:

    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
    

    我改变了什么: - 我插入“自我”。在窗前呼唤。否则,窗口会立即关闭,因为函数已结束。有了自我,它仍然活着。 - 我还在“window2”中更改了窗口的名称。原因是当我调用我的主窗口时,我已经使用了“窗口”。结果,它取代了前一个。使用新名称,两者都保持开放!

    问候

    【讨论】:

      猜你喜欢
      • 2018-10-12
      • 1970-01-01
      • 2012-09-27
      • 1970-01-01
      • 2012-04-20
      • 1970-01-01
      • 1970-01-01
      • 2016-08-14
      • 1970-01-01
      相关资源
      最近更新 更多