使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第三方库


热门话题
java的目标是从我的项目中删除不起作用的文件   java对for循环的理解   java我完成了在作业要求的位置查找字符的部分,但是如何从我找到的字符串中删除字符呢?   基于帧时的java动画   java请求无效。缺少XGoogUploadCommand标头   java如何在viewsource模式下使用openStream?   grpc grpc_ARG_KEEPALIVE_PERMIT_而不调用java服务器?   java如何通过Junit测试Web服务调用   如何在java中获取鼠标中键?   使用junit在spring测试中加载属性文件   Java中用于类的类修饰符   java多色文本图像   sql无法调试Java中的“连接到数据库失败”异常   java如何指定hibernate连接映射?   java Android工具栏不显示   java仿射转换不同的图形对象   使用终端的java问题   Java在tomcat上查找127.0.0.1失败