https://study.163.com/provider/400000000398149/index.htm?share=2&shareId=400000000398149(欢迎关注博主主页,学习python视频资源)

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难度不是很大)。本节描述了两者之间的主要差异。

支持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()

个人主页

http://www.itongji.cn/user/getSheCreateList?userId=105371

视频教程网址
http://sina.lt/fkem

Python爬虫视频系列,小白入门
http://t.cn/R8Xu2c8

PyQt 5.4参考指南 ---- PyQt5和PyQt4之间的差异的更多相关文章

  1. Python - SIP参考指南 - 介绍

    介绍 本文是SIP4.18的参考指南.SIP是一种Python工具,用于自动生成Python与C.C++库的绑定.SIP最初是在1998年用PyQt开发的,用于Python与Qt GUI toolki ...

  2. PHP程序员进阶学习书籍参考指南

    PHP程序员进阶学习书籍参考指南 @heiyeluren lastmodify: 2016/2/18     [初阶](基础知识及入门)   01. <PHP与MySQL程序设计(第4版)> ...

  3. ANTLR3完全参考指南读书笔记[01]

    引用 Terence Parr. The Definitive ANTLR Reference, Building Domain Specific Languages(antlr3 version). ...

  4. 《VTL语法参考指南》中文版[转]

    转自:http://blog.csdn.net/javafound/archive/2007/05/14/1607935.aspx <VTL语法参考指南>中文版 源文见 http://ve ...

  5. Windows Server 2008 R2服务器系统安全设置参考指南

    Server 2008 R2服务器系统安全设置参考指南  重点比较重要的几部 1.更改默认administrator用户名,复杂密码 2.开启防火墙 3.安装杀毒软件 1)新做系统一定要先打上补丁(升 ...

  6. transform使用参考指南

    transform使用参考指南 2010-09-18 16:06:33|  分类: html5+css3|字号 订阅     语法 transform :none | <transform-fu ...

  7. POCO库中文编程参考指南(4)Poco::Net::IPAddress

    POCO库中文编程参考指南(4)Poco::Net::IPAddress 作者:柳大·Poechant 博客:Blog.CSDN.net/Poechant 邮箱:zhongchao.ustc#gmai ...

  8. POCO库中文编程参考指南(3)Poco::Net::Socket

    POCO库中文编程参考指南(3)Poco::Net::Socket 作者:柳大·Poechant 博客:Blog.CSDN.net/Poechant 邮箱:zhongchao.ustc#gmail.c ...

  9. POCO库中文编程参考指南(2)基本数据类型(Poco/Types.h)

    POCO库中文编程参考指南(2)基本数据类型 作者:柳大·Poechant 博客:Blog.CSDN.net/Poechant 邮箱:zhongchao.ustc#gmail.com (# -> ...

随机推荐

  1. 面向对象程序设计第三次作业-Calculator

    题目: 最终代码: Scan.h: Print.h: Calaulator.cpp: 解题过程 看到题目后,在查询之后明白了这是多文件的题目,然后通过翁凯老师的视频讲解知道了.h和.cpp文件的区别和 ...

  2. Leetcode题库——3.无重复字符的最长子串

    @author: ZZQ @software: PyCharm @file: lengthOfLongestSubstring.py @time: 2018/9/18 20:35 要求:给定一个字符串 ...

  3. 用JAVA制作微型操作系统4月23日情况

    弄好了一个自认为十分精美的界面,但本想着昨天就在开始按钮上先套入控制jp222面板上的jb2标签上的时间更新,这按钮起到开始线程的作用(我认为按钮应该可以通过t.start()来触发线程,结果不知为什 ...

  4. SQL SERVER安装(2008)

    首先需要下载SQL SERVER2008安装程序:为省的麻烦给出网盘地址自行下载,百度网盘:密码:hslb 1.下载到你所选定文件夹中,我下载在E:\SQL SERVER中 2.选择第一个.exe文件 ...

  5. 07_Java基础语法_第7天(练习)_讲义

    今日内容介绍 1.循环练习 2.数组方法练习 01奇数求和练习 * A: 奇数求和练习 * a: 题目分析 * 为了记录累加和的值,我们需要定义一个存储累加和的变量 * 我们要获取到1-100范围内的 ...

  6. SQL语句中 chinese_prc_CS_AI_WS 以及replace用法

          Select * from [DBData].[dbo].[T_Student] where Name='lilei'    查询结果如下:   结论:由查询结果可知 SQL Server ...

  7. js 代码几种方式

    var nameSpace={ //public } (function(){ //private })(); var module=(function(){ //private return { / ...

  8. My复利计算程序测试报告

    My复利计算程序测试报告 4.0 单元测试----------------------------- 要求: 对我们和复利计算程序,写单元测试. 有哪些场景? 期待的返回值 写测试程序. 运行测试. ...

  9. Beta阶段——2

    一.提供当天站立式会议照片一张: 二. 每个人的工作 (有work item 的ID) (1) 昨天已完成的工作: 昨天主要是对beta阶段的任务做了总结 (2) 今天计划完成的工作: 今天主要是对管 ...

  10. [Cnbeta]BAT财报对比

    https://www.cnbeta.com/articles/tech/789123.htm 随着腾讯上周公布财报,BAT三家2018年第三季度的数据均已公布,曾经与腾讯.阿里齐名的百度正被拉开越来 ...