PyQt6 和 PyQt5 的差异

这篇具有很好参考价值的文章主要介绍了PyQt6 和 PyQt5 的差异。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

PyQt6 和 PyQt5 的差异

PyQt6 是 PyQt5 的下一个版本,但两个版本的写法基本上其实大同小异,这篇教学会介绍 PyQt6 和 PyQt5 有何差异。

快速预览:

  • .exec_() 改为 .exec()

  • 方法的位置或名称改变

  • 不需要高 DPI 缩放属性

  • 支援 Qt的资源

  • 特定平台

  • 其他细节差异

pyqt5 pyqt6,QT6教学,qt,python,开发语言

PyQt6 教学 - PyQt6 和 PyQt5 的差异

.exec_() 改为 .exec()

在 Python 2.7 中,exec 是一个保留字,使用者不可将这个字作为变数、函数或方法的名称的字,在 PyQt 的早期版本中,该方法被重命名为 ,并在后面加上底线避免命名衝突。然而在 Python 3.0 之后的版本删除了 exec 关键字,也由于 PyQt6 只支援 Python 3.x 的版本,所以就将 改为 。.exec_()``.exec_()``.exec()

方法的位置或名称改变

PyQt6 针对各个种类的 Enums 位置进行重大的改变。所有的 Enums 被归类到标准 Python 的 Enum 类裡作为子类别,并需要全名才能使用,下方列出 PyQt5 和 PyQt6 在使用上的差异。

函式库安装

PyQt5 PyQt6
pip install PyQtWebEngine pip install PyQt6-WebEngine

数值调整滑杆

PyQt5 PyQt6
QtWidgets.QLineEdit.Password QtWidgets.QLineEdit.EchoMode.Password
设置方向(1) setOrientation(QtCore.Qt.Orientation.Horizontal)
设置方向(2) setOrientation(QtCore.Qt.Orientation.Vertical)
QSlider.TicksAbove QSlider.TickPosition.TicksAbove
QSlider.Ticks下面 QSlider.TickPosition.TicksUnder
QSlider.TicksBothSides QSlider.TickPosition.TicksBothSides
QSlider.TicksLeft QSlider.TickPosition.TicksLeft
QSlider.TicksRight QSlider.TickPosition.TicksRight

消息档案对话窗口

PyQt5 PyQt6
QMessageBox.information QMessageBox.Icon.Information
QMessageBox.Warning QMessageBox.Icon.Warning
QMessageBox.Critical QMessageBox.Icon.Critical
QMessageBox.Question QMessageBox.Icon.Question
QMessageBox.Question QMessageBox.Icon.Question
QMessageBox.Ok QMessageBox.StandardButton.Ok
QMessageBox.Open QMessageBox.StandardButton.Open
QMessageBox.Save QMessageBox.StandardButton.Save
QMessageBox.Cancel QMessageBox.StandardButton.Cancel
QMessageBox.Close QMessageBox.StandardButton.Close
QMessageBox.Discard QMessageBox.StandardButton.Discard
QMessageBox.Apply QMessageBox.StandardButton.Apply

画笔和颜色

PyQt5 PyQt6
QtWidgets.QAction QtGui.QAction
QFont.Style斜体 QFont.Style.Style斜体
Qt.DotLine Qt.PenStyle.DotLine
Qt.FlatCap Qt.PenCapStyle.FlatCap
Qt.Miter加入 Qt.PenJoinStyle.MiterJoin
QImage.Format_RGB888 QImage.Format.Format_RGB888

对齐相关

PyQt5 PyQt6
QtCore.Qt.AlignLeft QtCore.Qt.AlignmentFlag.AlignLeft
QtCore.Qt.AlignCenter QtCore.Qt.AlignmentFlag.AlignCenter
QtCore.Qt.AlignRight QtCore.Qt.AlignmentFlag.AlignRight
QtCore.Qt.AlignTop QtCore.Qt.AlignmentFlag.AlignTop
QtCore.Qt.AlignBottom QtCore.Qt.AlignmentFlag.AlignBottom
QtWidgets.QListView.TopToBottom QtWidgets.QListView.Flow.TopToBottom
QtWidgets.QListView.LeftToRight QtWidgets.QListView.Flow.LeftToRight

布局

PyQt5 PyQt6
QtCore.Qt.AlignRight QtCore.Qt.AlignmentFlag.AlignRight
QtCore.Qt.AlignVCenter QtCore.Qt.AlignmentFlag.AlignVCenter
QtCore.Qt.AlignHCenter QtCore.Qt.AlignmentFlag.AlignHCenter
QtWidgets.QFormLayout.DontWrapRows QtWidgets.QFormLayout.RowWrapPolicy.DontWrapRows
QtWidgets.QFormLayout.WrapLongRows QtWidgets.QFormLayout.RowWrapPolicy.WrapLongRows
QtWidgets.QFormLayout.WrapAllRows QtWidgets.QFormLayout.RowWrapPolicy.WrapAllRows

鼠标、键盘与窗口

PyQt5 PyQt6
QMouseEvent.x() QEnterEvent.position(event).x()
QMouseEvent.y() QEnterEvent.position(event).y()
QMouseEvent.globalX() QEnterEvent.globalPosition(event).x()
QMouseEvent.globalY() QEnterEvent.globalPosition(event).y()
QMouseEvent.button() QEnterEvent.button(event)
QMouseEvent.timestamp() QEnterEvent.timestamp(event)
QtWidgets.QShortcut QtGui.QShortcut
Qt.已检查 Qt.CheckState.Checked
QtWidgets.width() QtWidgets.QApplication.screens()[0].size().width()
QtWidgets.height() QtWidgets.QApplication.screens()[0].size().height()

不需要高 DPI 缩放属性

因为高 DPI 是 PyQt6 的预设设定,因此不需要再使用下列高 DPI 缩放属性的设定。

Qt.AA_EnableHighDpiScaling
Qt.AA_DisableHighDpiScaling
Qt.AA_UseHighDpiPixmaps

不支援 Qt的资源

PyQt6 已经不再支援 Qt 资源框架 ( Qt's resource ),如果要将程式码和资源打包成应用程式,可以使用 PyInstaller 进行打包作业。

特定平台

PyQt6 弃用了 QtWin 和 QtMac 模组中支援特定平台的方法,转而使用本机调用。

QtWin:

try:
    # Include in try/except block if you're also targeting Mac/Linux
    from PyQt5.QtWinExtras import QtWin
    myappid = 'com.learnpyqt.examples.helloworld'
    QtWin.setCurrentProcessExplicitAppUserModelID(myappid)
except ImportError:
    pass

本地:

try:
    # Include in try/except block if you're also targeting Mac/Linux
    from ctypes import windll  # Only exists on Windows.
    myappid = 'mycompany.myproduct.subproduct.version'
    windll.shell32.SetCurrentProcessExplicitAppUserModelID(myappid)
except ImportError:
    pass

其他细节差异

  • QDesktopWidget 已经被移除,使用 QScreen 代替 ( 可以使用 , ,或 )。QWidget.screen() QGuiApplication.primaryScreen() QGuiApplication.screens()

  • QFontMetrics的.width()已重命名为 。horizontaladvance()

  • Qt.MidButton已重命名为 。Qt.MiddleButton

  • QRegExp 改为 QRegularExpression。

  • 推荐使用 QOpenGLVersionFunctionsFactory() 的 而不是 QOpenGLContext() 的。.get()

  • QWidget.mapToGlobal()和 返回一个 QPoinF 对象。QWidget.mapFromGlobal()

     文章来源地址https://www.toymoban.com/news/detail-607130.html

到了这里,关于PyQt6 和 PyQt5 的差异的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • pyqt6 + pycharm 搭建+使用入门

            最近要写代码给小白使用,但是让对方装python环境还要运行添加各种库,对小白太不友好了,所以选择了使用pyqt6+pycharm配合生成可视化python程序,在打包成exe执行。         首先安装PyQt6和PyQt6-tools。使用如下命令:        但是运行后会报如下错误:          这

    2024年02月10日
    浏览(44)
  • PyQt6 QMessageBox的使用方法

    放置一个QPushButton就可以。 点击按钮显示QMessageBox

    2024年02月11日
    浏览(38)
  • PyQt6与Pyecharts交互:必要操作

    版本信息: pyecharts 2.0.4 PyQt6 6.6.1 参考链接:怎么查看Python包的位置_mob649e8169b366的技术博客_51CTO博客 1)采用本地资源生成html 步骤一:下载pyecharts-assets-master.zip 下载地址:https://github.com/pyecharts/pyecharts-assets/archive/master.zip 说明:项目文件夹名为class5_3dFigurePyecharts,其中myfig

    2024年02月19日
    浏览(43)
  • mac python3.9安装pyqt5、qt5、pyqt5-tools

    pyqt6安装参考 PyQT6:看这一篇就够了 python PyQt6 常用操作以及常见问题解决 pycharm配置tools 参考链接 以下pip命令自行更具自己环境选择pip或pip3 在安装pyqt前必须先安装sip包 完成sip的安装后,安装pyqt和pyqt-tools, 可以直接使用命令: 若是使用pip3安装报错 AttributeError: module ‘sipb

    2024年02月14日
    浏览(47)
  • pyqt6安装与配置(基于vscode环境)

    注意:pyqt6-tools目前仅支持python3.9版本,3.9版本后的安装部成功。(截止2022.11.20) 安装pyqt和pyqt6-tools可以使用conda和pip进行安装 (1)首先创建python环境 2)激活pyqt_env环境 (3)安装pyqt6和pyqt6-tools,建议使用pip 当看到successfully是表示安装成功。 在安装成功pyqt6后,安装pyqt6-too

    2024年02月15日
    浏览(55)
  • PyQt6案例3:简单计算器案例

    1、打开QTdesigner 2、选择Dialog without Buttons,并单击“创建”按钮。 3、添加控件。 (1)拖拽“Label”控件,在文本属性中添加文字“请输入第一个数字:”;在Label水平位置拖拽一个“Line Edit”控件。 (2)拖拽“Label”控件,在文本属性中添加文字“请输入第二个额数字:”

    2024年02月01日
    浏览(51)
  • PyQt5+Qt设计师初探

            在上一篇文章中我们搭建好了PyQt5的开发环境,打铁到趁热我们基于搭建好的环境来简单实战一把 PyQt5包括的主要模块如下。 QtCore模块——涵盖了包的核心的非GUI功能,此模块被用于处理程序中涉及的时间、文件、目录、数据类型、文本流、链接、QMimeData、线程或

    2024年02月07日
    浏览(47)
  • PySide6/PyQt6如何设置全局热键,全局热键!

    我们在使用PySide6/PyQt6设置热键的时候一般都是使用 QShortcut,、QKeySequence 两个类来实现,但是这样写的快键键并不是全局快捷键,需要用户激活软件窗口才能实现快捷键对应的功能,本文将分享如何实现在PySide6/PyQt6软件中设置真正的全局热键 本文演示环境如下,由于测试条件

    2024年01月17日
    浏览(60)
  • PyQt6/PySide6:账本项目前端制作【附完整项目地址】

    最近在家里闲着没事,正好又看到朋友@studentWheat发了篇用Tkinter做的账本,于是决定跟他一起改进这个程序。 屏幕截图: 后端主要是朋友做的,在这里就不多说了,放个代码: src/api.py 详见https://blog.csdn.net/qq_67190987/article/details/125918530。 正如标题中所说,框架采用Qt6+Python,

    2023年04月24日
    浏览(72)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包