在 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 中没有类似于短版本的版本。
我是一名尝试 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 中没有类似于短版本的版本。