使 PySide/PyQt4 代码与 Qt5 一起工作(使用 PyQt5)
项目描述
qt_backport
qt_backport使基于 Qt4 的未经修改的 python 代码与 Qt5 一起工作。
更具体地说(目前),如果您安装了 PyQt5 并且可以正常工作,但想使用旧的 PyQt4 或 PySide 代码而无需进行任何转换工作,那么这个包适合您!
安装
如果有的话,卸载任何现有的 Qt4 包装器(PyQt4 或 PySide)。
点安装 qt_backport
用法
qt_backport自动使“PyQt4”和“PySide”包都可用,它们的功能与旧 Qt4 版本一样,但实际上由 PyQt5 支持。
即:像这样的旧代码将按原样工作:
import PyQt4 from PyQt4 import QtCore from PyQt4.QtGui import * #<-- this is supported, but yuck
或者
import PySide from PySide import QtCore from PySide.QtGui import * #<-- this is supported, but yuck
何时使用qt_backport?
当您安装了现代 Qt5 包装器(目前只有 PyQt5)并尝试使用您在网络上找到的遗留代码示例学习 Qt 时,此包特别有用。
qt_backport的主要目的不是将您的应用程序从 Qt4 移植到 Qt5(如果可以的话,您最好进行转换),但它确实做得很好,并且绝对可以帮助您入门。
为什么完全需要qt_backport?
当 Qt4 更新到 Qt5 时,对类组织进行了重大重组。此外,还有许多其他 API 更改。
最重要的变化之一是过去包含在“QtGui”中的大量类被分散到其他不同的位置。例如:所有的小部件都从 QtGui 中移出并放入一个名为 QtWidgets 的新模块中。尽管新位置更有意义,但它破坏了许多旧代码。qt_backport是一种使旧代码按原样工作的技巧。
在 Qt 4.x 到 Qt 5.2 的过渡中,还有更多的 API 更改(Qt 5.2 是撰写本文时的当前版本)。qt_backport处理其中许多更改,但可能尚未捕获所有这些更改。这种更改(由qt_backport处理)的一个简单示例是 QColor.dark() 在 Qt 4.3 中被删除并替换为 QColor.darker()。
请注意,虽然反向移植通常工作得很好,但您可能需要对旧代码进行额外的更改才能使其正常工作。这些更改取决于旧代码的年份。例如,当前不支持旧式信号/插槽连接。
注意:目前,唯一适用于 Qt5 的 Python 的 Qt 包装器是 PyQt5。将来这可能会改变(例如:当 PySide 升级到使用 Qt5 时)。
它是如何工作的?
qt_backport使用 PyQt5 包装 Qt(目前 Qt5 的唯一 python 包装器),但提供了一个模拟 PySide 和 PyQt4 API 的模拟层。安装qt_backport 会自动使 PySide 和 PyQt4 模拟器可用于导入。
这在视觉上更容易看到:
+-----------------------------------+ | | | Existing Python code that expects | | the PyQt4 or PySide API | | | +-------+------------------+--------+ | | OLD <with qt_backport> WAY | | +-----+-------+ | | | qt_backport | | PySide or | Emulation layer: | | PyQt4 | | | | | +-----+-------+ | | +--------+--------+ +-----+-------+ | | | | Wrapper layer: | PySide or PyQt4 | | PyQt5 | | | | | +--------+--------+ +-----+-------+ | | +----+-----+ +---+-----+ | | | | Qt library layer: | Qt4 | | Qt5 | | | | | +----------+ +---------+
去做:
支持旧式连接(即:connect(app, SIGNAL(), app, SLOT())
- 支持更多已知的 api 更改
API 变更覆盖率目前不是 100%,主要是由对某些类/方法的需求驱动的。不过,目前的覆盖率相当不错。
此处介绍了其他潜在的变化:http: //qt-project.org/doc/qt-5/portingguide.html
无数个 API 补丁的单元测试
执照
麻省理工学院。请参阅许可证文件。
项目详情
qt_backport -0.1.3.tar.gz 的哈希值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | eb76727d14b4d943f34163e07e1bc4f1b6a9de329f6270396379662dda7bcac5 |
|
| MD5 | d6559b6b763e7f54782acefbbe23895f |
|
| 布莱克2-256 | 4a64df1d5adf8f9d6b5097c75269f6dcba61a732aab1c19677b8eb8f0ff23fa2 |