PyQt 5.4参考指南 ---- PyQt5和PyQt4之间的差异 (百度翻译)

PyQt5 和 PyQt4 之间的差异

PyQt5不兼容PyQt4(尽管经验表明,将PyQt4的应用程序移植到PyQt5难度不是很大)。本节描述了两者之间的主要差异。

支持Python的版本

不支持较早的Python2.6之前的版本┊。

推荐使用特性

PyQt5不支持任何被标记为过时的或废弃的QT V5.0 的API。然而,还是可能有一些“漏网之鱼”。如果将来发现了,这些错误将被删除。

多个API

PyQt4支持许多不同的API版本(QStringQVariant等)。QVariant

PyQt5只支持V2版本的API。一个例外:对于QVariant ,去除了QPyNullVariant

老式的信号和槽

PyQt4的旧式的信号和槽不再被支持。因此以下用法在PyQt5中已经不能使用:

  • QObject.connect()
  • QObject.emit()
  • SIGNAL()
  • SLOT()

所有那些含有参数,并且对返回结果调用SIGNAL()SLOT()的方法不再被支持。绑定信号与调用函数总是等效的。

此外,另一个差异是增加了下面的函数:

  • disconnect() 断开所有对 QObject实例的连接,不需要参数。

新风格的信号和槽

QT实现的信号与一个可选的参数作为两个独立的信号,一个与论点 和一个没有它。PyQt4暴露这两允许你连接到他们每个 。然而,当发射信号,你必须使用适当的参数 发出的信号数。

PyQt5暴露唯一的信号在所有指定参数。然而它 允许任何可选参数被省略时,发射信号。

不同于PyQt4,PyQt5支持在类中自定义属性、信号与槽,即使这个类没有继承自QObject(比如:混合类)。

QtDeclarativeQtScriptQtScriptTools模块

PyQt4的QtDeclarativeQtScriptQtScriptTools模块不再支持。这些已被替换为PyQt5的QtQmlQtQuick模块,PyQt5支持 Python对象创建QML。

QtGui模块

PyQt4的QtGui模块,在PyQt5中被拆分成三个模块:QtGuiQtPrintSupportQtWidgets

QtOpenGL模块

只有QGlContextQGlFormatQGlWidget类被PyQt5支持。

QtWebKit模块

PyQt4的QtWebKit模块被分成PyQt5的QtWebKitQtWebkitWidgets模块。

pyqtconfig模块

PyQt4的pyqtconfig模块不支持。截面PyQt5扩展的API介绍了支持PyQt5 (例如提供第三方包qscintilla ),要建立在PyQt5。

dbus.mainloop.qt模块

PyQt4的dbus.mainloop.qt模块称为dbus.mainloop.PyQt5在 PyQt5。这使得他们可以并排安装。它们的功能是 相同。

QDataStream

readuint8()readint8()writeuint8()writeint8()方法解释值 读写数字。PyQt4中它们被解释为 单个字符的字符串。

QFileDialog

PyQt4的QFileDialog类getOpenFileNameAndFilter()getOpenFileNamesAndFilter()getSaveFileNameAndFilter()方法,

在PyQt5中已更名为 getOpenFileName()getOpenFileNames()getSaveFileName()

而PyQt4原来的getOpenFileName()getOpenFileNames()getSaveFileName()不再被PyQt5支持。

QGraphicsItemAnimation

对废弃的QGraphicsItemAnimation类的支持已被删除。如果移植现有的PyQt4应用程序,首先考虑用QPropertyAnimation替换。

QMatrix

对废弃的QMatrix类的支持已被删除。如果移植现有的PyQt4应用程序,首先考虑用QTransform替换。

QPyTextObject

PyQt4的QPyTextObject,是作为一个无法定义一个继承多个Qt类的Python类的变通的解决方法。PyQt5 支持定义一个Python类,来继承多个Qt类,只要他们已经在C++声明为Q_DECLARE_INTERFACE 。所以,QPyTextObject没有在PyQt5中实现。

QSet

PyQt4,套装在Python中的V2和V3一组Python 列表实现。在PyQt5套装总是作为一个集实现。

pyuic5

pyuic5不支持pyqt3——包装国旗pyuic4

pyrcc5

pyrcc5不支持- PY2- PY3国旗pyrcc4。输出pyrcc5兼容所有版本的Python Python 2.6 入手。

多重继承

不像PyQt4 PyQt5类实现多重继承,合作。在其他的话总是做 PyQt5类下面的Python代码在等效 V3__init__方法(如kwds是一个未使用的关键词 参数字典):

super().__init__(**kwds)

这意味着,那些未使用的关键字的参数传递给__init__任何mixin类的方法。这些混合类必须合作,即 必须如果他们有自己做一个类似的电话__init__实现。

当使用多重继承PyQt4是常见的电话__init__的超类方法明确,例如:

class MyQObject(QObject, MyMixin):
    def __init__(self, parent, mixin_arg):
        QObject.__init__(self, parent)
        MyMixin.__init__(self, mixin_arg)

        # Other initialisation...

在上述将导致PyQt5mymixin __init__。被称为两 。而要实现:

class MyQObject(QObject, MyMixin):
    def __init__(self, **kwds):
        super().__init__(**kwds)

        # Other initialisation...

请注意,如果没有其他的初始化做那么__init__方法不需要。

混合类应实施如下:

class MyMixin:
    def __init__(self, mixin_arg, **kwds):
        super().__init__(**kwds)

        # Other initialisation...

如果一个类只能继承从一个单一的类仍然可以调用 超阶级的__init__方法明确(虽然它是推荐使用super())。

看到合作支持多继承

释放GIL

GIL只在需要释放时才释放。而PyQt4调用Qt后总是释放GIL。

析构

当Python解释器退出PyQt4(默认)要求所有包裹的情况下,它拥有C++析构函数 。这发生在一个随机的顺序,可以使译员 崩溃。这种行为可以通过禁用 调用setdestroyonexit() SIP。功能。

PyQt5总是叫setdestroyonexit() SIP。自动。但是如果用实例 没有在模块级和相反 被创建在函数然后问题依然存在。例如,不要以下这样做 :

def main():
    app = QApplication(sys.argv)

    w = QWidget()
    w.show()

    app.exec()

if __name__ == ‘__main__‘:
    main()

以下做法是对的:

if __name__ == ‘__main__‘:
    app = QApplication(sys.argv)

    w = QWidget()
    w.show()

    app.exec()
时间: 2024-10-13 22:24:49

PyQt 5.4参考指南 ---- PyQt5和PyQt4之间的差异 (百度翻译)的相关文章

PyQt 5.4参考指南 ---- PyQt5和PyQt4之间的差异

pyqt4只有440个类, pyqt5有1000个类 pyqt商业版本和开源版本没有功能区别,如果pyqt与gpl协议不兼容,则考虑购买pyqt商业版本. GPL协议,general public liscense代码开源协议 http://www.mamicode.com/info-detail-456379.html PyQt5 和 PyQt4 之间的差异 PyQt5不兼容PyQt4(尽管经验表明,将PyQt4的应用程序移植到PyQt5难度不是很大).本节描述了两者之间的主要差异. 支持Py

PyQt 5.4参考指南 ---- 简介 (百度翻译)

PyQt 5.4参考指南 简介 这是5.4 pyqt5参考指南.pyqt5是一套绑定了 Digia 的 Python V5的Qt应用程序框架.QT是一个C++库和开发工具,包括平台 独立抽象的图形用户界面,网络,线程, 正则表达式,SQL数据库,XML,SVG,OpenGL,以及用户和应用 .pyqt5实现620以上的这些类作为一组Python 模块.pyqt5支持Windows,UNIX,Linux,Android,OS X和iOS平台. pyqt5组件 pyqt5包括许多不同的组件.首先有一

SIP参考指南 - 介绍

介绍 本文是SIP4.18的参考指南.SIP是一种Python工具,用于自动生成Python与C.C++库的绑定.SIP最初是在1998年用PyQt开发的,用于Python与Qt GUI toolkit的绑定,但适用于生成任何C或C++库的绑定. 此版本SIP生成的绑定可用于Python 2.3以后的版本,包括Python 3.x. 还有许多其他类似的工具,例如SWIG.事实上,SIP如此名字是因为它源于一个小型的SWIG.但不像SWIG,SIP是特别设计于将Python与C/C++进行绑定的,

Docker run 参考指南

Docker run参考指南 docker运行在一个独立的隔离的进程中. 当用户执行dockerrun,它将启动一个有着独立的文件系统,独立的网络和独立的进程树的进程. 基本的docker run命令的格式: docker run  [OPTIONS] IMAGE[:TAG] [COMMAND] [ARG...] [OPTIONS]分为两种: 1.对于用户独占性的设置: 前台.后台运行 容器定义 网络设定 容器在CPU和内存中的运行时间 运行权限和LXC配置 2.在操作者和开发者之间的共享设定,

Java面试参考指南(二)

访问修饰符 对于基本的OOPS(面向对象)概念,请看Java面试参考指南的第一部分.访问修饰符规定了一个类如何访问另一个类及它的成员(包括方法和变量). Java中有下列访问修饰符: private:私有变量和方法(非外部类)只能被声明它们的类的实例所使用. default:类中的数据.方法和它本身能够被声明为默认default.类中所有default成员都可以被本包中的其它类所访问. protected:相比default有更高的访问权限.只有成员变量和方法能够被声明为protected.父类

【原创】PHP程序员进阶学习书籍参考指南

PHP程序员进阶学习书籍参考指南 @heiyeluren lastmodify: 2016/2/18 [初阶](基础知识及入门) 01. <PHP与MySQL程序设计(第4版)>  http://item.jd.com/10701892.html 02. <深入浅出MySQL 数据库开发 优化与管理维护 第2版> http://item.jd.com/11381295.html 03. <实战Nginx:取代Apache的高性能Web服务器> http://dwz.cn

pyqt使用标准输入框 例子学习,由PyQt4 精彩实例分析提供学习

# -*- coding: utf-8 -*- # python:2.x __author__ = 'Administrator' from PyQt4.QtGui import * from PyQt4.Qt import * from PyQt4.QtCore import * import sys QTextCodec.setCodecForTr(QTextCodec.codecForName("utf8")) class Example(QDialog): def __init

POCO库中文编程参考指南(8)丰富的Socket编程

POCO库中文编程参考指南(8)丰富的Socket编程 作者:柳大·Poechant 博客:Blog.CSDN.net/Poechant 邮箱:zhongchao.ustc#gmail.com (# -> @) 日期:April 16th, 2012 1 POCO 中的 Socket POCO 中有 丰富的 Socket 封装.其继承关系如下: 本文暂且只介绍 StreamSocket.ServerSocket.DatagramSocket 2 Poco::Net::ServerSocket S

POCO库中文编程参考指南(1)总览

POCO库中文编程参考指南(1)总览 作者:柳大·Poechant 博客:Blog.CSDN.net/Poechant 邮箱:zhongchao.ustc#gmail.com (# -> @) 日期:April 14th, 2012 1 What is POCO? POCO 是什么?这是我最常被人问到的.POCO 是 POrtable COmponents 的缩写,官方主页:POCOProject.org.是一个非常出色的 C++ 库,相当于 Java 的 Class Library..NET