Pyqt5升级至Pyqt6:升级优势、差异与注意事项 详细总结

文章介绍了从PyQt5升级到PyQt6的主要变化,包括枚举的全限定命名、.exec()方法的调整、QResources的移除、QAction模块变动、高DPI处理的改变,以及QMouseEvent接口的更新。虽然升级相对简单,但需要注意一些向后兼容性问题和特定平台的变化。QtPy库提供了在不同Qt版本间兼容的解决方案。
摘要由CSDN通过智能技术生成

如果你已经在用pyqt5开发python的 gui程序,你也许会问自己是不是该升级到pyqt6,用上最新的qt库了呢?

这篇文章接下来会介绍pyqt5 和pyqt6的不同,升级的优势 和 可能遇到的问题。


目录

背景

从pyqt5 升级到pyqt6

枚举

.exec() or .exec_()?

删除QResources

Qt6差异

QAction移动

高DPI缩放

QMouseEvent

特定平台

杂项

缺少的模块

PyQt向后兼容

兼容

结论


背景

Qt是由Trolltech创建的一个用c++编程语言编写的GUI框架,现在由Qt公司接手开发。有两个Python版本 PySide和PyQt。前者是由Qt公司内部开发,而PyQt是由Riverbank计算有限公司独立开发的。 Qt6发布一个月后,2021年1月4日,PyQt6发布了第一个版本。


从pyqt5 升级到pyqt6

从pyqt5升级到pyqt6是相当简单,但还存在一些注意事项。对于某些程序,只需要把 import pyqt5 重命名为 pyqt 6 就足够让程序用新版本运行起来了。但大多数情况下,还是需要考虑pyqt和qt本身的变化。

让我们来了解一下这两个版本之间的差异,以了解如何编写这两个版本无缝兼容的代码。阅读本文之后,就能够把pyqt5的在线示例转换为pyqt6了


枚举

最可能影响项目的更改是删除枚举成员的缩写名称,在pyqt6中,所有枚举和标志必须要使用他全限定命名,包括那些在QtCore.Qt 命名空间。例如,PyQt6中的Qt.Checked标志变为Qt.CheckState.Checked。

# pyqt5
widget = QCheckBox("This is a checkbox")
widget.setCheckState(Qt.Checked)

# pyqt6
widget = QCheckBox("This is a checkbox")
widget.setCheckState(Qt.CheckState.Checked)

更新的值还蛮多的,这里就不能一一提及了。但如果你需要转换代码库,通常可以缩写名称,然后找到全限定命名的写法

好消息是,更改是向后兼容的:完全限定名称也可以在PyQt5中使用。因此,您可以在开始升级之前对PyQt5代码进行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值