使pyside/pyqt4代码与qt5一起工作(使用pyqt5)

qt_backport的Python项目详细描述


qt_backport

qt_backport使基于qt4的未修改的python代码与qt5一起工作。

更具体地说(目前),如果您安装了pyqt5并且 功能性的,但希望使用较旧的pyqt4或pyside代码而不必 做任何转换工作,这个包是给你的!

安装

    如果有一个QT4包装(PyQT4或PySID),请卸载任何现有的QT4包装器。
  1. Install PyQt5
  2. 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更改
  • 对zillion api补丁的单元测试

许可证

麻省理工学院。请参阅许可证文件。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
如何在JavaSpring引导应用程序中合并两个对象?   java序列化与防止按钮、链接等被点击两次有关吗?   java CORBA序列:我可以用方法定义对象序列吗?   java没有SonarQube的Spring批处理项目的代码覆盖   java如何在eclipse中删除上述方法和属性的搜索引用链接   spring boot如何在java注释中使用泛型T类型?   java导入外部(未编译)groovy类,并将它们保留在jar之外   如何在int[]Java中找到所有值的总和?   Java在ArrayList中删除重复项的问题   Java更改菜单栏、项目背景和文本颜色   网络设置网络。使用Elasticsearch JAVA API将主机发布到客户端节点   Python到Java加密/解密,确保密码匹配?   java Faing在Ubuntu12.04上构建eucalyptus的困难   java使用org。阿帕奇。平民fileupload在mysql数据库中上传图像,但调用servlet会得到一个空白的白页