如果你已经在用pyqt5开发python的 gui程序,你也许会问自己是不是该升级到pyqt6,用上最新的qt库了呢?
这篇文章接下来会介绍pyqt5 和pyqt6的不同,升级的优势 和 可能遇到的问题。
目录
背景
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代码进行