我一直在使用pyqt5进行QT5 for Python的实验,我注意到大多数教程建议使用pyuic5将XML UI转换为Python代码,我还看到过一些教程使用**uic.loadUi(“myui.ui”)**来动态加载XML UI。对我来说,这似乎是一个更干净,更模块化的解决方案,但这似乎是一个不受欢迎的选择。有没有理由用pyuic5转换代码是一个更好的解决方案?
pyqt5
QT5
XML UI
pyuic5
h9a6wy2h1#
这两种解决方案都很好,它们都有优缺点,必须与您想做的事情权衡,而且很多时候这将取决于程序员的品味。
uic.loadUiType()
nzk0hqpo2#
使用pyuic5的最大原因是IDE(例如Visual Studio Code、PyCharm)不理解.ui文件,因此无法为类提供代码内省(例如小部件名称的自动完成),除非将其编译为Python。
.ui
6rqinv9w3#
在深入研究了这一点之后,对我来说,动态加载QT Designer生成的表单是一种可行的方法,您可以使用以下命令来解决无法访问底层小部件的问题(假设您的表单中有一个名为bob_label的标签):
self.bob_label: QLabel = self.findChild(QtWidgets.QLabel, 'bob_label')
在PyCharm中,无论如何,这将自动启用Intellisense(因此IDE现在知道窗口类中有一个名为bob_label的标签)。在Visual Studio代码中,尽管我付出了很大的努力,但我还是找不到一种方法来轻松地使其工作,尽管我最终还是管理了它。
3条答案
按热度按时间h9a6wy2h1#
这两种解决方案都很好,它们都有优缺点,必须与您想做的事情权衡,而且很多时候这将取决于程序员的品味。
脓毒性5:
uic.加载Ui():
uic.loadUiType()
实现继承)[-]nzk0hqpo2#
使用
pyuic5
的最大原因是IDE(例如Visual Studio Code、PyCharm)不理解.ui
文件,因此无法为类提供代码内省(例如小部件名称的自动完成),除非将其编译为Python。6rqinv9w3#
在深入研究了这一点之后,对我来说,动态加载QT Designer生成的表单是一种可行的方法,您可以使用以下命令来解决无法访问底层小部件的问题(假设您的表单中有一个名为bob_label的标签):
在PyCharm中,无论如何,这将自动启用Intellisense(因此IDE现在知道窗口类中有一个名为bob_label的标签)。在Visual Studio代码中,尽管我付出了很大的努力,但我还是找不到一种方法来轻松地使其工作,尽管我最终还是管理了它。