{ "info": { "author": "Alexander R\u00f6ssler", "author_email": "alex@machinekoder.com", "bugtrack_url": null, "classifiers": [], "description": "# Live Coding Environment for Python, Qt and QML\n[![PyPI version](https://badge.fury.io/py/python-qt-live-coding.svg)](https://badge.fury.io/py/python-qt-live-coding)\n[![Build Status](https://travis-ci.org/machinekoder/python-qt-live-coding.svg?branch=master)](https://travis-ci.org/machinekoder/python-qt-live-coding)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://github.com/machinekoderpython-qt-live-coding/blob/master/LICENSE)\n[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/ambv/black)\n\n![Logo](./src/livecoding/icon.png)\n\nThis project provides a live coding environment for Python and Qt. It supports both [PyQt](https://riverbankcomputing.com/software/pyqt/intro) and [Qt for Python (PySide2)](http://wiki.qt.io/Qt_for_Python)\nvia the [python_qt_binding](https://pypi.org/project/python_qt_binding/).\n\n**See also**:\n\n* [My blog post about Qt/QML live coding](https://machinekoder.com/speed-up-your-gui-development-with-python-qt-and-qml-live-coding/)\n* [cpp-qt-live-coding](https://github.com/machinekoder/cpp-qt-live-coding): The C++ version of this project.\n* [Lightning Talk from QtDay.it 19](https://youtu.be/jbOPWncKE1I?t=1856)\n\n## Install\n\nTo install the live coding environment run:\n\n```bash\npython setup.py install\n```\n\nor install it via pip\n\n```bash\npip install python-qt-live-coding\n```\n\nYou also need to install PyQt or PySide2 for this application to work. The quickest way to\nachieve this is to use pip.\n\n```bash\npip install PyQt5\n```\n\nor\n\n```bash\npip install pyside2\n```\n\n## Use\n\nThe live coding environment comes with a live runner which enables your to live\ncode Qt GUIs quickly.\n\nRun following to test drive the example:\n\n```bash\npython_qt_live_coding examples\n```\n\nYour will instantly see the example project in the live runner.\n\n![Live Runner Example](./docs/live_runner_example2.png)\n\nNow you can either select the `MainScreen.qml` file or type `MainScreen` in the filter.\n\nWhen you type, the file will be automatically selected.\n\nWhen loaded you will see following.\n\n![Live Runner Example](./docs/live_runner_example.png)\n\nThis is the example GUI inside the live runner.\n\nNow press the `Edit` button. Your favorite text editor should open promptly.\n\nEdit the code inside the editor und you will see the GUI updates instantly when you save the document.\n\n### Integrate in your application\n\nAlternatively, you can integrate live coding into your Python Qt application.\n\nThis especially useful if you want to customize the live coding GUI for your needs.\n\nFor this purpose you need to do following things:\n\n1. Integrate the `start_live_coding` function into your `main.py`.\n2. Add a command line argument for live coding.\n3. Optionally, add a custom `live.qml`.\n\nTo learn more about how this works please take a look the [*integrated* example](./examples/integrated).\n\n## Python QML module support\n\nThe live coding environment has built in support for Python QML modules.\n\nThe idea is to place QML and Python code in the same directory, similar to how you would create a Qt/C++ application.\nAdditionally, with Python we have the advantage of being able to discover modules automatically.\n\nFor this purpose add `register_qml_types` function to the `__init__.py` of your Python QML module.\nSee the example in [examples/standalone/module/\\_\\_init__.py](./examples/standalone/module/__init__.py).\n\nHowever, so far automatic reloading of Python code is not support.\nWhen you work on a Python module please use the `Restart` button which restarts the live coding application instead.\n\n## Forcing PyQt or Python for Qt (PySide2) usage\n\nIn some cases you might want to force which Python Qt binding `python_qt_live_coding` is using.\nThis can be done by passing the optional `--binding` argument via the command line.\n\n\n```bash\npython_qt_live_coding -b pyside .\n```\n\n## PyCharm Support\n\nFor this application to work with PyCharm and other IntelliJ IDEs please disable the \"safe write\" feature.\nThe feature writes a temporary file before saving any file, which can confuse the file change watcher.", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/machinekoder/python-qt-live-coding/", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "python-qt-live-coding", "package_url": "https://pypi.org/project/python-qt-live-coding/", "platform": "", "project_url": "https://pypi.org/project/python-qt-live-coding/", "project_urls": { "Homepage": "https://github.com/machinekoder/python-qt-live-coding/" }, "release_url": "https://pypi.org/project/python-qt-live-coding/0.4.3/", "requires_dist": null, "requires_python": "", "summary": "Live coding for Python, Qt and QML", "version": "0.4.3" }, "last_serial": 5598572, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "3c3578e359969120232e908589c67dfb", "sha256": "1e7c9fad4b690f0ceeb5b88bd3e308b16c41502cdcc67795b36860490fa3f412" }, "downloads": -1, "filename": "python-qt-live-coding-0.1.0.tar.gz", "has_sig": false, "md5_digest": "3c3578e359969120232e908589c67dfb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4335, "upload_time": "2018-06-10T09:09:06", "url": "https://files.pythonhosted.org/packages/6c/0b/6b0568513ccdb08f85a1747a8c50fd7946831213fff02534cb94f582b331/python-qt-live-coding-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "2926e25dd2a5f84c3b5a7126841ff5c7", "sha256": "3a386e60cdf8193ca7e12157f5c935926c727f8560a8992b150a856bf523c2a4" }, "downloads": -1, "filename": "python-qt-live-coding-0.1.1.tar.gz", "has_sig": false, "md5_digest": "2926e25dd2a5f84c3b5a7126841ff5c7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4343, "upload_time": "2018-06-10T09:10:18", "url": "https://files.pythonhosted.org/packages/ad/66/65c99a5dbf9878d6fd6d9361e182340893d6fdccc44603cb1f07fc994870/python-qt-live-coding-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "a5f84b9b291eb38a11f1d5e331af391f", "sha256": "c4aa24eb6e75769b64326a8ce7214f4774da7092aef740cefd951f3fe8ef5322" }, "downloads": -1, "filename": "python-qt-live-coding-0.1.2.tar.gz", "has_sig": false, "md5_digest": "a5f84b9b291eb38a11f1d5e331af391f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5290, "upload_time": "2018-06-10T09:11:44", "url": "https://files.pythonhosted.org/packages/5a/91/f3aea75be80735228395bf060d8e55537356bfa8f751ac34c08acdcb7f82/python-qt-live-coding-0.1.2.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "7d12f853c21321e24f1dcc27afd3a408", "sha256": "89d706bbf82be5c35ec129a707846403ace2f4e76c14022ef06bb83d5bb16d66" }, "downloads": -1, "filename": "python-qt-live-coding-0.1.3.tar.gz", "has_sig": false, "md5_digest": "7d12f853c21321e24f1dcc27afd3a408", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13511, "upload_time": "2018-06-10T10:14:45", "url": "https://files.pythonhosted.org/packages/1d/96/b034ac57405e938dcb3dbd7504a06ee7b2816e29cb29c42062c30cee2be9/python-qt-live-coding-0.1.3.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "30e229dc94ee2e839230d0bce73f8097", "sha256": "f8ea723a8a915b352df93efbe62a0dede5e480fca911884b8b6a480be190174a" }, "downloads": -1, "filename": "python-qt-live-coding-0.2.0.tar.gz", "has_sig": false, "md5_digest": "30e229dc94ee2e839230d0bce73f8097", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13992, "upload_time": "2018-09-16T15:49:38", "url": "https://files.pythonhosted.org/packages/5f/fc/2e42486c93e8e2ff079cd311bcad8f183177a33c3aa7e5cd2c56c379fc05/python-qt-live-coding-0.2.0.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "d2c4c82175b5f07a74d44c69f92f2713", "sha256": "cc1ccead3e221a63164d2525612d65c815d3a094f79d77fac9958e5ae47770b0" }, "downloads": -1, "filename": "python-qt-live-coding-0.2.1.tar.gz", "has_sig": false, "md5_digest": "d2c4c82175b5f07a74d44c69f92f2713", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14048, "upload_time": "2018-09-16T16:45:58", "url": "https://files.pythonhosted.org/packages/52/17/aefd1f985c7f01efac5133687136b6ec98fd4e3f6ee9eed635da2093b531/python-qt-live-coding-0.2.1.tar.gz" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "be00a6df0f4146296506c2354aba8caf", "sha256": "fff6c92f3c59bb10676cd6764d6c77cb5e0653bd00c20d9fbff7f8b6696ce6f3" }, "downloads": -1, "filename": "python-qt-live-coding-0.2.2.tar.gz", "has_sig": false, "md5_digest": "be00a6df0f4146296506c2354aba8caf", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14251, "upload_time": "2018-09-23T11:18:36", "url": "https://files.pythonhosted.org/packages/78/e7/cab57df26600ad89705b034d6793aaadf3e9d32d7aef8040b99627836123/python-qt-live-coding-0.2.2.tar.gz" } ], "0.2.3": [ { "comment_text": "", "digests": { "md5": "6e8e3b65235c229598ef4574ad8d123a", "sha256": "cd02006f167c94829a1495faab619926b98bb51147a54fa97b0ec813739ed8c0" }, "downloads": -1, "filename": "python-qt-live-coding-0.2.3.tar.gz", "has_sig": false, "md5_digest": "6e8e3b65235c229598ef4574ad8d123a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14336, "upload_time": "2018-11-02T21:05:27", "url": "https://files.pythonhosted.org/packages/73/19/22f38f8d6165011ca7d02ff62029a267075185a3a3f44504432ceac73b47/python-qt-live-coding-0.2.3.tar.gz" } ], "0.2.4": [ { "comment_text": "", "digests": { "md5": "bf1a7542631191b5e042801ed1c3fe1f", "sha256": "176de5852f3078b6111bddeda3cf024cc8025d854fec5657bedbc1f5fbe0a2dc" }, "downloads": -1, "filename": "python-qt-live-coding-0.2.4.tar.gz", "has_sig": false, "md5_digest": "bf1a7542631191b5e042801ed1c3fe1f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14620, "upload_time": "2018-12-23T20:23:40", "url": "https://files.pythonhosted.org/packages/10/cf/0a5c62bba775b2a5d39c7d0ee38fa59b63083f4492e31e140ffe98cee0b9/python-qt-live-coding-0.2.4.tar.gz" } ], "0.2.5": [ { "comment_text": "", "digests": { "md5": "93543b1d4601e832961bff1e3cc8033d", "sha256": "7d7a51befde817b987a978f86ed8f6224fe2ee70568fd3991668dc7b3ead3f4e" }, "downloads": -1, "filename": "python-qt-live-coding-0.2.5.tar.gz", "has_sig": false, "md5_digest": "93543b1d4601e832961bff1e3cc8033d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14720, "upload_time": "2018-12-26T11:34:40", "url": "https://files.pythonhosted.org/packages/68/d1/2c8b66479905f85366057285fc4e167dbd9d9078785520f36fc1fb13b188/python-qt-live-coding-0.2.5.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "2d4a7f2961a50b759bd36dbdeaf4787c", "sha256": "ce89df3f19fb7b6f62e5fb51ebb1f9859444282ad0dcf1585f27d170ed88cbce" }, "downloads": -1, "filename": "python-qt-live-coding-0.3.0.tar.gz", "has_sig": false, "md5_digest": "2d4a7f2961a50b759bd36dbdeaf4787c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14904, "upload_time": "2019-03-16T19:53:15", "url": "https://files.pythonhosted.org/packages/0e/51/44392f928b5b38d9ec7fd4059375c709767c45e75772bf68bf104c48b49e/python-qt-live-coding-0.3.0.tar.gz" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "84bf33300ed0cdb80cd6963a4b0b86ed", "sha256": "51c4e8f92593bf20a61c63bb6de95125cb42cb11b19eccd03cb360394baa2b63" }, "downloads": -1, "filename": "python-qt-live-coding-0.3.1.tar.gz", "has_sig": false, "md5_digest": "84bf33300ed0cdb80cd6963a4b0b86ed", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16553, "upload_time": "2019-04-23T19:12:52", "url": "https://files.pythonhosted.org/packages/2c/e4/c0e0a02a0f1c8b4142625786d52a4d700a7792d407dbeda63402d345e69d/python-qt-live-coding-0.3.1.tar.gz" } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "cbfbb479ed9c347da663a80276a9f56c", "sha256": "072abf6955cd3cc2610d1e2ef517debe341c3698bd8f21f19b2b81424d252fd6" }, "downloads": -1, "filename": "python-qt-live-coding-0.4.0.tar.gz", "has_sig": false, "md5_digest": "cbfbb479ed9c347da663a80276a9f56c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16667, "upload_time": "2019-07-05T13:43:02", "url": "https://files.pythonhosted.org/packages/62/41/519ffea17abbee8246ae699e96a2ebb4272b2340b5cf22dfc089e50a2c54/python-qt-live-coding-0.4.0.tar.gz" } ], "0.4.1": [ { "comment_text": "", "digests": { "md5": "d120f9e9a2ae845e4b45ebc5c2dd7dcc", "sha256": "852dd09e50412f24dbdef1427453d3e4ab43a6120e1777950aa9d536789cd8ad" }, "downloads": -1, "filename": "python-qt-live-coding-0.4.1.tar.gz", "has_sig": false, "md5_digest": "d120f9e9a2ae845e4b45ebc5c2dd7dcc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16796, "upload_time": "2019-07-09T08:15:26", "url": "https://files.pythonhosted.org/packages/e7/a6/31ebc3f9a45fe53b21276314aa05ecfb4735b19aa0863744d283917f55e1/python-qt-live-coding-0.4.1.tar.gz" } ], "0.4.2": [ { "comment_text": "", "digests": { "md5": "e595471a8a09c40ecf7a932047c84456", "sha256": "eeffd49c29a72d267222236b3539eeb122107eba8a38ed0938b1c2f2470d745b" }, "downloads": -1, "filename": "python-qt-live-coding-0.4.2.tar.gz", "has_sig": false, "md5_digest": "e595471a8a09c40ecf7a932047c84456", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16848, "upload_time": "2019-07-10T14:01:20", "url": "https://files.pythonhosted.org/packages/29/bd/1638a07b314d37289faa9bf4ca89d4095770efa0b9b9728dbb1c4ff2d895/python-qt-live-coding-0.4.2.tar.gz" } ], "0.4.3": [ { "comment_text": "", "digests": { "md5": "b2f92b1030296a87c30734bd3c1b4a6a", "sha256": "ddba3f6a7f975477dfd9a0b5052df6eb2185e3fd4281373fef63fbb9125538be" }, "downloads": -1, "filename": "python-qt-live-coding-0.4.3.tar.gz", "has_sig": false, "md5_digest": "b2f92b1030296a87c30734bd3c1b4a6a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16824, "upload_time": "2019-07-29T09:41:35", "url": "https://files.pythonhosted.org/packages/6c/be/0bf6e5379c87370c1e29c7703451439a1a2f6003c4b4cd0cb2b62c682fab/python-qt-live-coding-0.4.3.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "b2f92b1030296a87c30734bd3c1b4a6a", "sha256": "ddba3f6a7f975477dfd9a0b5052df6eb2185e3fd4281373fef63fbb9125538be" }, "downloads": -1, "filename": "python-qt-live-coding-0.4.3.tar.gz", "has_sig": false, "md5_digest": "b2f92b1030296a87c30734bd3c1b4a6a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16824, "upload_time": "2019-07-29T09:41:35", "url": "https://files.pythonhosted.org/packages/6c/be/0bf6e5379c87370c1e29c7703451439a1a2f6003c4b4cd0cb2b62c682fab/python-qt-live-coding-0.4.3.tar.gz" } ] }