当前位置: 首页 > news >正文

PyQt5 导入ui文件报错 AttributeError: type object ‘Qt‘ has no attribute

问题描述:

利用 PyQt5 编写可视化界面是较为普遍的做法,但是使用全新UI版本的 Pycharm 修改之前正常的UI文件时,在没有动其他代码的情况下发现出现以下报错 AttributeError: type object 'Qt' has no attribute 'Qt::ContextMenuPolicy::DefaultContextMenu'

Traceback (most recent call last):File "E:\master\main.py", line 16, in <module>main()File "E:\master\main.py", line 9, in mainmain_window = MainWindow() #创建窗口对象File "E:\master\MainWindow.py", line 24, in __init__loadUi("./UI/MainWindow0.ui", self)File "D:\newanaconda\lib\site-packages\PyQt5\uic\__init__.py", line 238, in loadUireturn DynamicUILoader(package).loadUi(uifile, baseinstance, resource_suffix)File "D:\newanaconda\lib\site-packages\PyQt5\uic\Loader\loader.py", line 66, in loadUireturn self.parse(filename, resource_suffix)File "D:\newanaconda\lib\site-packages\PyQt5\uic\uiparser.py", line 1037, in parseactor(elem)File "D:\newanaconda\lib\site-packages\PyQt5\uic\uiparser.py", line 826, in createUserInterfaceself.wprops.setProperties(self.toplevelWidget, elem)File "D:\newanaconda\lib\site-packages\PyQt5\uic\properties.py", line 415, in setPropertiesprop_value = self.convert(prop, widget)File "D:\newanaconda\lib\site-packages\PyQt5\uic\properties.py", line 378, in convertreturn func(prop[0], **args)File "D:\newanaconda\lib\site-packages\PyQt5\uic\properties.py", line 129, in _enumreturn self._pyEnumMember(prop.text)File "D:\newanaconda\lib\site-packages\PyQt5\uic\properties.py", line 111, in _pyEnumMemberreturn getattr(QtCore.Qt, membername)
AttributeError: type object 'Qt' has no attribute 'Qt::ContextMenuPolicy::DefaultContextMenu'

原因分析:

经排查,发现原因是编辑UI文件时使用了 Pycharm 自带的高版本Qt designer插件,使用该版本的designer编辑UI文件时保存的格式会发生变化。如下图所示请添加图片描述
左侧为使用Pycharm 自带的高版本Qt designer插件编辑保存后的UI文件源码,右侧为使用外部工具的Qt designer 编辑保存后的UI文件源码,可见它们保存的格式略有区别。正是这种区别导致了报错的发生。


解决方案:

  1. 首先是解绑新版Pycharm里面对 .ui 文件打开方式的绑定,如下图所示:
    请添加图片描述
    将插件里面搜索qt,取消qt的方框。重启pycharm生效之后,就不会再利用 pycharm 自带的高版本designer插件打开 .ui 文件了。
    注:也可以不解绑,但是不要用pycharm自带的designer对文件做任何修改,实测改动再取消改动保存后还是会改变格式导致保错。
  2. 配置外部工具编辑 .ui 文件,参考相关博客即可: Pycharm配置PyQt5的三个External Tools—Qt Designer、pyUIC、pyRCC。
    具体为:File -> Settings -> Tools-> External Tools,点击 + 新建扩展工具,如下图所示
    在这里插入图片描述
http://www.lryc.cn/news/445289.html

相关文章:

  • Unity中Rigidbody 刚体组件和Rigidbody类是什么?
  • MySQL学习笔记(持续更新中)
  • sqlserver插入数据删除数据
  • [51单片机] 简单介绍 (一)
  • 6个岗位抢1个人,百万年薪抢毕业生?大厂打响AI人才战
  • erlang学习:Linux命令学习3
  • 力扣41 缺失的第一个正数 Java版本
  • 第五篇:Linux进程的相关知识总结(1)
  • 企业级Windows server服务器技术(1)
  • 【30天玩转python】单元测试与调试
  • 13.第二阶段x86游戏实战2-动态模块地址
  • 【WebLogic】WebLogic 11g 控制台模式下安装记录
  • 失踪人口回归(明天开始继续更新学习内容)
  • AIGC对网络安全的影响
  • golang学习笔记25——golang 实现 MD5加密、RSA加密 和 Base64编码
  • 2024海外电商数据分析之印度篇
  • JavaWeb纯小白笔记02:Tomcat的使用:发布项目的三种方式、配置虚拟主机、配置用户名和密码
  • 为什么数据需要 QA 流程
  • Spring Boot 学习之路 -- 基础认知
  • JavaScript --json格式字符串和对象的转化
  • LabVIEW提高开发效率技巧----采用并行任务提高性能
  • 裸土检测算法实际应用、裸土覆盖检测算法、裸土检测算法
  • 深入剖析链表反转:多语言实现与高级语法特性20240924
  • 【数据结构初阶】链式二叉树接口实现超详解
  • 力扣189 轮转数组 Java版本
  • RMAN异机恢复数据库记录
  • JVM 调优篇7 调优案例4- 线程溢出
  • C++类与对象(三)
  • 云栖实录 | 阿里云 OpenLake 解决方案重磅发布:多模态数据统一纳管、引擎平权联合计算、数据共享统一读写
  • 《线性代数》学渣笔记