PyQt v5.11 与早期版本不兼容

  PyQt v5.11 导入sip模块

在以前的版本中,PyQt5使用通常安装在site-packages目录中的sip模块的副本,并使用以下方式访问它:

import sip

此版本包含该模块的私有副本。应用程序应按如下方式访问它:

from PyQt5 import sip

作为向后兼容性的辅助,模块仍然可以像以前一样导入,但这仅在PyQt5首先导入另一个模块时才有效。例如,以下内容将起作用:

from PyQt5 import QtCore
import sip

但是,如果import声明的顺序颠倒,它将无法工作。

 

  PyQt的V5.6 

  执行pyqtSlot签名

在以前的版本中,如果信号连接到由pyqtSlot修饰的方法,并且信号和插槽的签名不兼容,则无论如何都要进行连接,就像方法没有被装饰一样。这种行为是一个错误,而不是一个功能。

此版本可确保签名兼容,如果不是,则会引发异常。

 

  PyQt的V5.5 

  Latin-1的字符串转换为QByteArray中

当预期QByteArray时,此版本将删除Latin-1编码字符串的自动转换。它在PyQt v5.4中被弃用了。

  未处理的Python异常

在许多情况下,Python代码是从C ++执行的。Python重新实现C ++虚拟方法可能是最常见的例子。在以前的版本中,如果Python代码引发异常,那么PyQt将调用Python的PyErr_Print()函数,然后调用sys.excepthook。然后,默认的异常挂钩将显示异常和任何回溯stderr。这种行为有许多缺点:

  • 应用程序不会终止,这意味着行为与在其他情况下引发异常时的行为不同
  • 编写的输出stderr可能不被开发人员或用户看到(特别是如果它是GUI应用程序),从而隐藏了应用程序试图报告潜在错误的事实。

PyQt v5.4中不推荐使用此行为。在PyQt v5.5中,未处理的Python异常将导致调用Qt的qFatal()函数。默认情况下,这将调用abort(),应用程序将终止。请注意,应用程序安装的异常挂钩仍然优先。

 

  PyQt的V5.3 

  执行Python插槽

在以前的版本中,当信号发送到未使用pyqtSlot修饰的Python插槽时,它不会检查底层C ++接收器实例是否仍然存在。这与PyQt v5.0发布时的PyQt v4行为相匹配,但不反映标准的C ++行为。

缺少检查意味着对象可以将其已销毁的信号连接 到自身,以便它可以监视其底层C ++实例何时被销毁。不幸的是,这对于更常见的代码来说是一个隐藏的错误的潜在来源。

在此版本中,已经引入了检查 - 因此为依赖于先前行为的任何代码创建了不兼容性。作为解决方法,no_receiver_check已将参数添加到connect中,允许在每个连接的基础上抑制检查。

  具有默认参数的Qt信号

在以前的版本中,带有默认参数的Qt信号被暴露为多个信号,每个信号都有一个额外的默认参 例如 被暴露 和 其中前者是默认的信号。因此,可以通过使用空元组作为关键来对后者进行索引 - 尽管这样做没有任何好处。QAbstractButton::clicked(bool checked = false)QAbstractButton::clicked(bool checked)QAbstractButton::clicked()

在此版本中,仅显示包含所有参数的信号。但是,信号的emit()方法仍支持默认参数,即正常使用时,不应注意更改。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值