{ "info": { "author": "Russell Warren", "author_email": "russ@perspexis.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Topic :: Software Development", "Topic :: Software Development :: Libraries :: Python Modules", "Topic :: Software Development :: User Interfaces" ], "description": "``qt_backport``\n===============\n\n``qt_backport`` makes unmodified python code based on Qt4 work with Qt5.\n\nMore specifically (and currently), if you have PyQt5 installed and\nfunctional, but want to work with older PyQt4 or PySide code without having\nto do any conversion work, this package is for you!\n\nInstallation\n============\n\n1. Uninstall any existing Qt4 wrapper (PyQt4 or PySide) if you have one.\n2. `Install PyQt5`_\n3. ``pip install qt_backport``\n\n.. _`Install PyQt5`: http://pyqt.sourceforge.net/Docs/PyQt5/installation.html\n\nUsage\n=====\n\n``qt_backport`` automatically makes both 'PyQt4' and 'PySide' packages\navailable that will function like the old Qt4 versions, but will actually be\nbacked by PyQt5.\n\nie: your old code like this will just work as-is: ::\n\n import PyQt4\n from PyQt4 import QtCore\n from PyQt4.QtGui import * #<-- this is supported, but yuck\n\nor ::\n\n import PySide\n from PySide import QtCore\n from PySide.QtGui import * #<-- this is supported, but yuck\n\n\nWhen to use ``qt_backport``?\n============================\n\nThis package is particularly useful when you have installed a modern Qt5\nwrapper (currently only PyQt5) and are trying to learn Qt using legacy code\nexamples you find on the web.\n\n``qt_backport`` is not primarily intended as a method for porting your\napplications from Qt4 to Qt5 (you are better off converting if you can), but\nit does do a good job of this and can definitely help get you started.\n\n\nWhy is ``qt_backport`` needed at all?\n=====================================\n\nWhen Qt4 was updated to Qt5 there was a *major* reorganization done to the\nclass organization. In addition, there have been many other API changes.\n\nOne of the most significant changes was that a huge number of classes that\nused to be contained within 'QtGui' were dispersed out to various other\nlocations instead. eg: *All* of the widgets were moved out of QtGui and into\na new module called QtWidgets. Although the new locations make much more\nsense, it broke a lot of old code. ``qt_backport`` is a hack to make old\ncode work as-is.\n\nThere have been many more API changes in the Qt 4.x to Qt 5.2 transition (Qt\n5.2 is current the time of writing this). ``qt_backport`` deals with many of\nthese changes, but all of them may not be captured (yet). A simple example of\nsuch a change (that ``qt_backport`` handles) is that QColor.dark() was\nremoved and replaced with QColor.darker() in Qt 4.3.\n\nNote that, although the backport generally works quite well, there may be\nadditional changes you need to make to to your old code for it to work. These\nchanges depend on the vintage of your old code. For example, old style\nsignal/slot connections are not currently supported.\n\nNOTE: At the current time, the only Qt wrapper for python that works with Qt5\nis PyQt5. In future this may change (eg: when PySide upgrades to use Qt5).\n\nHow does it work?\n=================\n\n``qt_backport`` wraps Qt using PyQt5 (currently the only python wrapper for\nQt5), but provides an emulation layer that emulates both the PySide and the\nPyQt4 APIs. Installing ``qt_backport`` automatically makes the PySide and\nPyQt4 emulators available for import.\n\nThis is easier to see visually:\n\n::\n\n \u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009+-----------------------------------+\u2009\u2009\u2009\u2009\u2009\u2009\u2009\n \u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009|\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009|\u2009\u2009\u2009\u2009\u2009\u2009\u2009\n \u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009|\u2009Existing\u2009Python\u2009code\u2009that\u2009expects\u2009|\u2009\u2009\u2009\u2009\u2009\u2009\u2009\n \u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009|\u2009\u2009\u2009\u2009\u2009the\u2009PyQt4\u2009or\u2009PySide\u2009API\u2009\u2009\u2009\u2009\u2009\u2009\u2009|\u2009\u2009\u2009\u2009\u2009\u2009\u2009\n \u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009|\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009|\u2009\u2009\u2009\u2009\u2009\u2009\u2009\n \u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009+-------+------------------+--------+\u2009\u2009\u2009\u2009\u2009\u2009\u2009\n \u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009|\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009|\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\n \u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009OLD\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\n \u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009WAY\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009|\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\n \u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009|\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009+-----+-------+\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\n \u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009|\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009|\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009|\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\n \u2009\u2009qt_backport\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009|\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009|\u2009\u2009PySide\u2009or\u2009\u2009|\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\n \u2009\u2009Emulation\u2009layer:\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009|\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009|\u2009\u2009\u2009\u2009PyQt4\u2009\u2009\u2009\u2009|\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\n \u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009|\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009|\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009|\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\n \u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009|\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009+-----+-------+\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\n \u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009|\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009|\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\n \u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009+--------+--------+\u2009\u2009\u2009+-----+-------+\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\n \u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009|\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009|\u2009\u2009\u2009|\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009|\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\n \u2009\u2009Wrapper\u2009layer:\u2009\u2009\u2009\u2009|\u2009PySide\u2009or\u2009PyQt4\u2009|\u2009\u2009\u2009|\u2009\u2009\u2009PyQt5\u2009\u2009\u2009\u2009\u2009|\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\n \u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009|\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009|\u2009\u2009\u2009|\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009|\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\n \u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009+--------+--------+\u2009\u2009\u2009+-----+-------+\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\n \u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009|\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009|\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\n \u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009+----+-----+\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009+---+-----+\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\n \u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009|\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009|\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009|\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009|\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\n \u2009\u2009Qt\u2009library\u2009layer:\u2009\u2009\u2009\u2009\u2009|\u2009\u2009\u2009Qt4\u2009\u2009\u2009\u2009|\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009|\u2009\u2009\u2009Qt5\u2009\u2009\u2009|\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\n \u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009|\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009|\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009|\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009|\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\n \u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009+----------+\u2009\u2009\u2009\u2009\u2009\u2009\u2009\u2009+---------+\u2009\u2009\u2009\u2009\u2009\n\nTo do:\n======\n- support old-style connections (ie: ``connect(app, SIGNAL(), app, SLOT()``)\n- support more known api changes\n - API change coverage is currently not 100%, being mostly driven by demand for certain classes/methods. Coverage is currently quite good, though.\n - other potential changes are covered here: http://qt-project.org/doc/qt-5/portingguide.html\n- unit tests for the zillion api patches\n\nLicense\n=======\nMIT. See LICENSE file.", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/rwarren/qt_backport", "keywords": "Qt PyQt4 PyQt5 PySide", "license": "MIT", "maintainer": null, "maintainer_email": null, "name": "qt_backport", "package_url": "https://pypi.org/project/qt_backport/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/qt_backport/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/rwarren/qt_backport" }, "release_url": "https://pypi.org/project/qt_backport/0.1.3/", "requires_dist": null, "requires_python": null, "summary": "Makes PySide/PyQt4 code work with Qt5 (using PyQt5)", "version": "0.1.3" }, "last_serial": 1310433, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "d13e562eb654caae0531573b150cbaa9", "sha256": "824e127a5b7c9c4eb749944ad73c0dacc2fbc6d16ed571239c7ac37321afd8ed" }, "downloads": -1, "filename": "qt_backport-0.1.0.tar.gz", "has_sig": false, "md5_digest": "d13e562eb654caae0531573b150cbaa9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15287, "upload_time": "2014-05-14T04:28:24", "url": "https://files.pythonhosted.org/packages/dc/6d/9246771b4a6bf422ed59ec669fe8783f24ce904ee89f8fb0b0190ce3e1f3/qt_backport-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "5510b421d214b823e7a05555e8a1ca09", "sha256": "4a94718e58831b0bf9d1549dae6ff243f88f58991aa4e94c0ba6efb0c19f0797" }, "downloads": -1, "filename": "qt_backport-0.1.1.tar.gz", "has_sig": false, "md5_digest": "5510b421d214b823e7a05555e8a1ca09", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15351, "upload_time": "2014-05-14T06:52:07", "url": "https://files.pythonhosted.org/packages/a7/60/84297f9985b8875c316211fe7bfa14035b9f5d9f938799a727ac34eea0a4/qt_backport-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "457feac33c75c98bd57889e98ae6f9d2", "sha256": "894aeee8bc1a2ebfaa3cb8906634a3f202cba92e6c4b5a076889827adb1f8e65" }, "downloads": -1, "filename": "qt_backport-0.1.2.tar.gz", "has_sig": false, "md5_digest": "457feac33c75c98bd57889e98ae6f9d2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15575, "upload_time": "2014-05-16T03:42:22", "url": "https://files.pythonhosted.org/packages/fe/93/5f49940901c3db7de95565c8a839939bc491a1d704e9a9308e00794966a1/qt_backport-0.1.2.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "d6559b6b763e7f54782acefbbe23895f", "sha256": "eb76727d14b4d943f34163e07e1bc4f1b6a9de329f6270396379662dda7bcac5" }, "downloads": -1, "filename": "qt_backport-0.1.3.tar.gz", "has_sig": false, "md5_digest": "d6559b6b763e7f54782acefbbe23895f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15653, "upload_time": "2014-11-17T17:44:39", "url": "https://files.pythonhosted.org/packages/4a/64/df1d5adf8f9d6b5097c75269f6dcba61a732aab1c19677b8eb8f0ff23fa2/qt_backport-0.1.3.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "d6559b6b763e7f54782acefbbe23895f", "sha256": "eb76727d14b4d943f34163e07e1bc4f1b6a9de329f6270396379662dda7bcac5" }, "downloads": -1, "filename": "qt_backport-0.1.3.tar.gz", "has_sig": false, "md5_digest": "d6559b6b763e7f54782acefbbe23895f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15653, "upload_time": "2014-11-17T17:44:39", "url": "https://files.pythonhosted.org/packages/4a/64/df1d5adf8f9d6b5097c75269f6dcba61a732aab1c19677b8eb8f0ff23fa2/qt_backport-0.1.3.tar.gz" } ] }