首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么在pyqt5中我应该使用pyuic5而不是uic.loadUi("my.ui")?

为什么在pyqt5中我应该使用pyuic5而不是uic.loadUi("my.ui")?
EN

Stack Overflow用户
提问于 2018-09-24 01:28:20
回答 3查看 10.1K关注 0票数 19

我一直在用QT5为Python做实验,使用pyqt5。我注意到,大多数教程建议使用pyuic5将XML转换为Python代码。我还看到了一些教程,它们使用uic.loadUi("myui.ui")动态加载XML UI。对我来说,这似乎是一个更干净、更模块化的解决方案,但它似乎是一个不受欢迎的选择。用pyuic5转换您的代码是否是一个更好的解决方案?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-09-24 02:13:52

这两种解决方案都是好的,它们都有优点和缺点,必须与您想要做的东西进行权衡,而且很多时候它将取决于程序员的品味。

pyuic5

  • 允许继承+
  • 运行应用程序+时没有额外的负载
  • 每次修改文件时将.ui转换为.py -

uic.loadUi()

  • 在修改.ui +时,不必修改任何内容
  • 编译额外时间的+
  • 不允许继承(可以使用uic.loadUiType()实现继承) -
  • 不允许使用检查 -
票数 15
EN

Stack Overflow用户

发布于 2021-10-01 12:49:05

使用pyuic5的最大原因是IDE(例如Visual、PyCharm)不理解.ui文件,因此不能为类提供代码内省(例如小部件名称的自动完成),除非将其编译为.ui

票数 2
EN

Stack Overflow用户

发布于 2022-06-03 08:26:43

在深入研究了这一点之后,对我来说,动态加载QT生成的表单是可行的。您可以通过这样的命令(假设您的表单中有一个名为bob_label的标签)来解决无法访问底层小部件的问题:

代码语言:javascript
复制
self.bob_label: QLabel = self.findChild(QtWidgets.QLabel, 'bob_label')

无论如何,在PyCharm中,这将自动启用Intellisense (因此IDE现在知道窗口类中有一个名为bob_label的标签)。在Visual代码中,尽管我付出了很大的努力,但我还是找不到一种让它轻松工作的方法,尽管我做了最终管理好它

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52471705

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档