在 python 中没有所有样板的情况下从 QUiLoader 加载是否安全?

Is it safe to load from QUiLoader without all the boiler plate in python?

我是一名尝试 python gui 开发(python 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 的垃圾收集,较短的版本可以安全使用吗?这种方法有什么缺点吗?

谢谢!

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

唯一的缺点是您只能加载一个小部件,但是如果您有一个 QUiLoader 实例,您可以从其他 .ui 加载多个小部件。也许你经常看到它,因为它在 the docs of PySide2, and this is based on the docs of Qt 中没有类似于短版本的版本。