使pyside/pyqt4代码与qt5一起工作(使用pyqt5)
qt_backport的Python项目详细描述
qt_backport
qt_backport使基于qt4的未修改的python代码与qt5一起工作。
更具体地说(目前),如果您安装了pyqt5并且 功能性的,但希望使用较旧的pyqt4或pyside代码而不必 做任何转换工作,这个包是给你的!
安装
- Install PyQt5
- pip install qt_backport
用法
qt_backport自动生成“pyqt4”和“pyside”包 它的功能类似于旧的qt4版本,但实际上 由PYQT5支持。
IE:您的旧代码将按原样工作:
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移到 一个叫做qtwights的新模块。虽然新的地点使 感觉,它打破了很多旧的密码。qt_backport是一种老掉牙的方法 代码按原样工作。
在qt 4.x到qt 5.2转换(qt 5.2是否为当前时间)。qt_backport处理许多 这些变化,但可能还没有全部捕捉到。一个简单的例子 这样的变化(即qt_backporthandles)是qcolor.dark()是 删除并替换为qt 4.3中的qcolor.darder()。
注意,虽然backport通常工作得很好,但是 要使旧代码正常工作,需要对其进行其他更改。这些 更改取决于旧代码的年份。例如,旧式 当前不支持信号/插槽连接。
注意:目前,python的唯一qt包装器使用qt5 是Pyqt5。将来这可能会改变(例如:当pyside升级到使用qt5时)。
它是如何工作的?
qt_backport使用pyqt5包装qt(当前是 qt5),但提供了一个模拟层,该层同时模拟pyside和 PYQT4原料药。安装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
- 对zillion api补丁的单元测试
许可证
麻省理工学院。请参阅许可证文件。