@[TOC]pyqt6
pyqt5转pyqt6需要注意的事项 一、枚举类型Pyqt5的枚举类型是用python的enum.IntEnum实现的,Pyqt6的枚举类型是是用python的enum.Enum实现的。
在Pyqt5使用枚举为:类名.枚举值
在Pyqt6使用枚举为:类名.枚举名.枚举值。
枚举名是什么需要查qt文档,或者在IDE(vs code、pycharm、sublime等)查看document说明。
常用文档:pyqt6所有类
常用文档:Qt命名空间
以下是几个样例:
# from PyQt5.QtCore import Qt from PyQt6.QtCore import Qt # Qt.AlignCenter # 在https://doc.qt.io/qt-6/qt.html查到 # enum:AlignmentFlag { AlignLeft, AlignRight, AlignHCenter, AlignJustify, AlignTop, …, AlignVertical_Mask } Qt.AlignmentFlag.AlignCenter # Qt.RightButton Qt.MouseButton.RightButton Qt.MouseButton.LeftButton # QEvent.MouseButtonPress QEvent.Type.MouseButtonPress #QtWidgets.QMessageBox.Yes QtWidgets.QMessageBox.StandardButton.Yes # 其他枚举类型新写法: Qt.MatchFlag.MatchExactly Qt.ItemDataRole.UserRole Qt.CheckState.Checked Qt.ItemFlag.NoItemFlags Qt.ContextMenuPolicy.CustomContextMenu Qt.GlobalColor.red QtGui.QFont.Weight.Bold QtWidgets.QDialogButtonBox.ButtonRole.AcceptRole QtWidgets.QLineEdit.EchoMode.Password QAbstractItemView.EditTrigger.DoubleClicked QAbstractItemView.EditTrigger.NoEditTriggers QAbstractItemView.SelectionBehavior.SelectRows二、取消QtWidgets.QDesktopWidget()
# 屏幕坐标、宽高 #rect = QtWidgets.QDesktopWidget().screenGeometry() rect = QtGui.QGuiApplication.primaryScreen().availableGeometry()三、取消QtWidgets.qApp
# QtWidgets.qApp.quit() QApplication.quit() QApplication.exit()四、改变QAction所属模块
# QtWidgets.QAction QtGui.QAction五、删除.exec_() 、.print_()方法
六、删除Qt模块改用.exec()
# from PyQt5 import Qt from PyQt6.QtCore import Qt七、注意python、PyQt6、PyQt6-Qt6之间版本的一致性
(在外网环境通过pip install PyQt6安装的应该没有此问题,可跳过)
我的开发环境是Windows7(内网)、Windows10(外网)上的python3.8.10《python-3.8.10-amd64.exe》。我有离线安装的需求,之前下载PyQt6的whl文件的时候,没注意查看py版本,安装了下面的三个库
PyQt6-6.2.2-cp36-abi3-win_amd64.whl
PyQt6_Qt6-6.2.2-py3-none-win_amd64.whl
PyQt6_sip-13.2.0-cp38-cp38-win_amd64.whl
同样的代码,在Windows10(外网)上导入PyQt6正常运行,在Windows7(内网)上导入PyQt6的任意一个模块,都报错:importError: DLL load failed while importing QtCore: 找不到指定的程序。
Traceback (most recent call last): File "D:devworkspacetest.py", line 7, infrom PyQt6 import QtCore importError: DLL load failed while importing QtCore: 找不到指定的程序。
网上找了很多资料,有说vscode+Anaconda安装python和Pyqt出问题的,有说要安装Visual C++2015-2019以上版本的,试了都没用。后面想着重新安装PyQt6试试,才发现我安装的PyQt6的《PyQt6-6.2.2-cp36-abi3-win_amd64.whl》写明cp36,是对应Python3.6的。然后马上重新下载了低版本的PyQt6.1.1,以下三个库重新安装了,就正常了。
PyQt6-6.1.1-cp36.cp37.cp38.cp39-none-win_amd64.whl
PyQt6_Qt6-6.1.1-py3-none-win_amd64.whl
PyQt6_sip-13.2.0-cp38-cp38-win_amd64.whl
不过奇怪的是,在Windows10上用Python3.8.10安装《PyQt6-6.2.2-cp36-abi3-win_amd64.whl》竟然能正常使用…
参阅:pyqt5与pyqt6的不同点
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)