首页 > 解决方案 > 在没有 python 中的所有样板的情况下从 QUiLoader 加载是否安全?

问题描述

我是一名尝试 python gui 开发(py​​thon 3、PySide2、QtDesigner)的业余爱好者。我的代码工作正常,我只是想更好地理解一些东西。

所有教程都像这样(在构造函数中)加载 ui:

from PySide2.QtUiTools import QUiLoader
...
# in the constructor
    loader = QUiLoader()
    file = QFile(self.__resource('the_ui_file.ui'))
    file.open(QFile.ReadOnly)
    self.ui = loader.load(file, None)
    file.close()

但是,这同样有效:

self.ui = QUiLoader().load('the_ui_file.ui')

鉴于 python 的垃圾收集,较短的版本可以安全使用吗?这种方法有什么缺点吗?

谢谢!

标签: pythonpyside2

解决方案


实际上没有问题,因为 GC 将在加载小部件后完成其范围后将其删除。

唯一的缺点是您只会加载一个小部件,但如果您有一个 QUiLoader 实例,您可以从其他 .ui 加载多个小部件。也许你经常看到它,因为它出现在PySide2 的文档中,这是基于Qt 的文档 ,没有类似于短版本的版本。


推荐阅读