1、两者主要差异
——模块重命名:PyQt6中的一些模块被重新命名,以拟合Qt 6的命名规范。例如,`QtWidgets`、`QtGui`等仍保持相同的名字,但是`QString`和`QVariant`等被移除,因为Python已有原生类型(`str`和`int`等)可以直接使用。
——弃用的功能:PyQt6移除了一些在Qt 6中已经不再使用的功能和类。PyQt6是Qt 6的一套绑定,所以如果Qt 6中某个功能被弃用,那么在PyQt6中相应的Python封装也会被移除。
——改进的支持:PyQt6提供了对Qt 6新增功能的支持,包括更新的图形引擎、更好的高DPI显示支持,以及一个新的硬件加速3D API。PyQt绑定这些更新以保持与Qt库的同步,并使Python开发者能够使用这些新特性。下面是差异概览:
- .exec_() 改为 .exec()
- 方法的位置或名称改变
- 不需要高 DPI 缩放属性
- 支援 Qt的资源
- 特定平台
- 其他细节
2、方法位置与名称问题
PyQt6 针对各个种类的 Enums 位置进行重大的改变。所有的 Enums 被归类到标准 Python 的 Enum 类裡作为子类别,并需要全名才能使用,下方列出 PyQt5 和 PyQt6 在使用上的差异。
PyQt5 | PyQt6 |
---|---|
QtWidgets.QLineEdit.Password | QtWidgets.QLineEdit.EchoMode.Password |