{ "info": { "author": "Szabolcs Dombi", "author_email": "cprogrammer1994@gmail.com", "bugtrack_url": null, "classifiers": [], "description": "# pyprojector\n\n**pyprojector** is a Python 3 module that creates an interpreter independent window. Tight loops, long calculation often prevents us from updating a window, using Python threads adds more complexity and a choppy rendering experience.\n\n## How pyprojector works?\n\nA window is created on a new OS thread, the WinAPI takes care of the window.\nThe window has two OpenGL contexts with shared objects.\nThe user can use the the OpenGL context assigned to the current thread to render arbitrary images using OpenGL. The `window.update(framebuffer=...)` method takes a `framebuffer` and copies its content into a backbuffer. The backbuffer will be used anytime the window needs a redraw.\n\n## Features\n\n- The user can create and update a window with a minimal API.\n- The rendered frames are quickly copied to a backbuffer maintained by another thread.\n- The user can render depending on the window's visibility.\n- A hidden window have an almost zero performance penalty.\n- The user is not responsible updating a window to avoid dirty frames.\n- The window can be shown/hidden from the system tray.\n- Closing the window just hides the window.\n- A screenshot can be saved with `ctrl+s`.\n- A `ctrl+c` in the window raises a `KeyboardInterrupt`.\n- A screenshot can be taken programatically using `window.screenshot()`.\n- The program can be halted with `ctrl+shift+q`.\n- The window is refreshed only when necessary.\n- There is a builtin FPS limiter.\n\n## Example\n\n```py\nimport pyprojector\n\nwnd = pyprojector.window((840, 480), __file__, fps=60)\nfbo = ... # OpenGL Framebuffer Object\n\nwhile True:\n # the user's loop\n # do long calculation, train AI, run gyms, ...\n\n if wnd.visible:\n # render into fbo\n # pass fbo to the window\n wnd.update(fbo)\n```\n\nfor more examples please visit the [examples](https://github.com/cprogrammer1994/pyprojector/tree/master/examples/).\n\n## Acknowledgement\n\nThis project is using `miniz` to save PNG files.\n\n\n", "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/cprogrammer1994/pyprojector", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "pyprojector", "package_url": "https://pypi.org/project/pyprojector/", "platform": "", "project_url": "https://pypi.org/project/pyprojector/", "project_urls": { "Homepage": "https://github.com/cprogrammer1994/pyprojector" }, "release_url": "https://pypi.org/project/pyprojector/1.0.1/", "requires_dist": null, "requires_python": "", "summary": "pyprojector is an asyncronous window for rendering", "version": "1.0.1" }, "last_serial": 5581898, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "df405de376ae79d68459e90f3f99dc3f", "sha256": "12537f65acdad8ddee89714d9bf47763c18e60bc8b0008cf6958f8cb402fcda1" }, "downloads": -1, "filename": "pyprojector-0.1.0.tar.gz", "has_sig": false, "md5_digest": "df405de376ae79d68459e90f3f99dc3f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 568, "upload_time": "2019-07-17T16:34:03", "url": "https://files.pythonhosted.org/packages/6f/88/a8eb3a1d5dc2da5fd249797000c257a6f8e1f32b878a7977a69746aa1fe7/pyprojector-0.1.0.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "89dbd001828915fbc030240e31c7006a", "sha256": "9e1240d3655480762ebe1a71683e7777a75b3e6d74ec2483ce0244b9ccee1556" }, "downloads": -1, "filename": "pyprojector-0.2.0-cp36-cp36m-win32.whl", "has_sig": false, "md5_digest": "89dbd001828915fbc030240e31c7006a", "packagetype": "bdist_wheel", "python_version": "cp36", "requires_python": null, "size": 24647, "upload_time": "2019-07-17T17:13:35", "url": "https://files.pythonhosted.org/packages/c9/c0/1552cb2515f14105c37a8684c87fbb57fa01e26c57d7067af6a06d149a7a/pyprojector-0.2.0-cp36-cp36m-win32.whl" }, { "comment_text": "", "digests": { "md5": "7031eb7729974abb79b215a3ce2248f8", "sha256": "0b9ab4680c602410f3ed071b24b2445509f446d0d4df8ef3e1273d262024fa25" }, "downloads": -1, "filename": "pyprojector-0.2.0-cp36-cp36m-win_amd64.whl", "has_sig": false, "md5_digest": "7031eb7729974abb79b215a3ce2248f8", "packagetype": "bdist_wheel", "python_version": "cp36", "requires_python": null, "size": 26327, "upload_time": "2019-07-17T17:13:36", "url": "https://files.pythonhosted.org/packages/14/07/31e32a90208cd835398704eb6879f60861bbacc4febe2724e1579c7addc6/pyprojector-0.2.0-cp36-cp36m-win_amd64.whl" }, { "comment_text": "", "digests": { "md5": "7ce7caa321e56fb53844c499fe92eafa", "sha256": "6c1c178d5775cac3a934f7b05aa72d721f98e998564872e9b0f76ab50d16e247" }, "downloads": -1, "filename": "pyprojector-0.2.0-cp37-cp37m-win32.whl", "has_sig": false, "md5_digest": "7ce7caa321e56fb53844c499fe92eafa", "packagetype": "bdist_wheel", "python_version": "cp37", "requires_python": null, "size": 24647, "upload_time": "2019-07-17T17:13:38", "url": "https://files.pythonhosted.org/packages/97/db/cf049154532990895f7fe046894af1005104eb8d4c976196d575e5529acc/pyprojector-0.2.0-cp37-cp37m-win32.whl" }, { "comment_text": "", "digests": { "md5": "fbcbf21e36ddf7502f6040380fc978d8", "sha256": "0583e453ec49b77215058ca066aef64b22d624c76157c6237e883274a1e62de0" }, "downloads": -1, "filename": "pyprojector-0.2.0-cp37-cp37m-win_amd64.whl", "has_sig": false, "md5_digest": "fbcbf21e36ddf7502f6040380fc978d8", "packagetype": "bdist_wheel", "python_version": "cp37", "requires_python": null, "size": 26326, "upload_time": "2019-07-17T17:13:40", "url": "https://files.pythonhosted.org/packages/68/42/a1aba43fbee06fb527dd2bf47f8f2d3ab905d2e5bd1f7154d48d11b0c40a/pyprojector-0.2.0-cp37-cp37m-win_amd64.whl" }, { "comment_text": "", "digests": { "md5": "38299c3a72d67955dcf4ea31958b3e71", "sha256": "4b9adc265460de2f31add1c1d5f3dbf00eb22103cb91db446ea86029550088e0" }, "downloads": -1, "filename": "pyprojector-0.2.0.tar.gz", "has_sig": false, "md5_digest": "38299c3a72d67955dcf4ea31958b3e71", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 60865, "upload_time": "2019-07-17T17:13:42", "url": "https://files.pythonhosted.org/packages/73/35/3d025b2c91d3456e2fa68ea50478b7ee8bb8be3fb48a79e88f673507b7da/pyprojector-0.2.0.tar.gz" } ], "1.0.0": [ { "comment_text": "", "digests": { "md5": "9e3af752d7bb8eb81c8324ba86cd5d6a", "sha256": "21a49f2767ff142bce559f3bcfabcd3dcae3c69be99d8543dc8a71c360d6e934" }, "downloads": -1, "filename": "pyprojector-1.0.0-cp36-cp36m-win32.whl", "has_sig": false, "md5_digest": "9e3af752d7bb8eb81c8324ba86cd5d6a", "packagetype": "bdist_wheel", "python_version": "cp36", "requires_python": null, "size": 29504, "upload_time": "2019-07-18T11:36:30", "url": "https://files.pythonhosted.org/packages/51/10/1d903d6d4e281ef74de68eb189a7ccbf45710cdc1d7cb8cd96eeda934517/pyprojector-1.0.0-cp36-cp36m-win32.whl" }, { "comment_text": "", "digests": { "md5": "c85d01ba07880933d02b16ea3b0de7f0", "sha256": "f84371d78b97fe0ca9a18717413c82df1b984a1eac15b0fedc54fb9c01c310ac" }, "downloads": -1, "filename": "pyprojector-1.0.0-cp36-cp36m-win_amd64.whl", "has_sig": false, "md5_digest": "c85d01ba07880933d02b16ea3b0de7f0", "packagetype": "bdist_wheel", "python_version": "cp36", "requires_python": null, "size": 31454, "upload_time": "2019-07-18T11:36:28", "url": "https://files.pythonhosted.org/packages/25/e4/8c2b2d640ca696336807772827d5c3e57692cb8641e445f81af139982ad7/pyprojector-1.0.0-cp36-cp36m-win_amd64.whl" }, { "comment_text": "", "digests": { "md5": "a2c5a6b1a6caffe62681eff743a4c9eb", "sha256": "39146bb7e951f80813a0369ef79fd4b72c25e7a7d280403bcb2c5ce5194a3775" }, "downloads": -1, "filename": "pyprojector-1.0.0-cp37-cp37m-win32.whl", "has_sig": false, "md5_digest": "a2c5a6b1a6caffe62681eff743a4c9eb", "packagetype": "bdist_wheel", "python_version": "cp37", "requires_python": null, "size": 29503, "upload_time": "2019-07-18T11:36:33", "url": "https://files.pythonhosted.org/packages/fe/80/b398c1b254a3e9b9ff69afb8de7b55e9b3ecb9dc96ddf97c2b45a1742065/pyprojector-1.0.0-cp37-cp37m-win32.whl" }, { "comment_text": "", "digests": { "md5": "a6a3d8f71dcf84a15d928c1d0ef16618", "sha256": "4913869b115c70a454328c8e640405c57310aa913aedd274fa92fa15c7e287aa" }, "downloads": -1, "filename": "pyprojector-1.0.0-cp37-cp37m-win_amd64.whl", "has_sig": false, "md5_digest": "a6a3d8f71dcf84a15d928c1d0ef16618", "packagetype": "bdist_wheel", "python_version": "cp37", "requires_python": null, "size": 31454, "upload_time": "2019-07-18T11:36:31", "url": "https://files.pythonhosted.org/packages/ab/08/5512e8e81f05548b86dbf972ca0af88914ea54e3d5cf54aacdbb19384e0c/pyprojector-1.0.0-cp37-cp37m-win_amd64.whl" }, { "comment_text": "", "digests": { "md5": "c60078b7b103cd10fcdaca88c6032756", "sha256": "e2183e3cdeeaf1e401b8010b432954cb09da4a9c45119b3ce89e41986b49f3ea" }, "downloads": -1, "filename": "pyprojector-1.0.0.tar.gz", "has_sig": false, "md5_digest": "c60078b7b103cd10fcdaca88c6032756", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 103698, "upload_time": "2019-07-18T11:36:16", "url": "https://files.pythonhosted.org/packages/07/5f/d68a740fc0bbc7e92b3ce0d2b2053de301242720056a0d357512700bb59c/pyprojector-1.0.0.tar.gz" } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "8775827f3d06b5dd4b3a37882e528a39", "sha256": "f71b982ab4998f8f7142ff8b2ed6c04b31126a4be0021b11412bb7ea61bd6b79" }, "downloads": -1, "filename": "pyprojector-1.0.1-cp36-cp36m-win32.whl", "has_sig": false, "md5_digest": "8775827f3d06b5dd4b3a37882e528a39", "packagetype": "bdist_wheel", "python_version": "cp36", "requires_python": null, "size": 28888, "upload_time": "2019-07-25T07:43:26", "url": "https://files.pythonhosted.org/packages/1f/f7/bba560b2610805300b5f7ba297df2cb4260acfe8078c12fdaae7144a829c/pyprojector-1.0.1-cp36-cp36m-win32.whl" }, { "comment_text": "", "digests": { "md5": "9f2d578f18673c8b4bbf96c69a5f008d", "sha256": "00c336cac3b96c819938a236eb57f664faa11b7e26db9a012a08456074b86b03" }, "downloads": -1, "filename": "pyprojector-1.0.1-cp36-cp36m-win_amd64.whl", "has_sig": false, "md5_digest": "9f2d578f18673c8b4bbf96c69a5f008d", "packagetype": "bdist_wheel", "python_version": "cp36", "requires_python": null, "size": 30591, "upload_time": "2019-07-25T07:43:24", "url": "https://files.pythonhosted.org/packages/47/00/99153ba0f99c8d5cf744a5948082057ea49ee04ae9a40188e3a376efb73c/pyprojector-1.0.1-cp36-cp36m-win_amd64.whl" }, { "comment_text": "", "digests": { "md5": "4dd15cf7c3a45a402a8ae1b10d091c85", "sha256": "ee2c0dda3c0bc8ad521671643e242d7e4f0ba34d807734949dff17df4b7bd18e" }, "downloads": -1, "filename": "pyprojector-1.0.1-cp37-cp37m-win32.whl", "has_sig": false, "md5_digest": "4dd15cf7c3a45a402a8ae1b10d091c85", "packagetype": "bdist_wheel", "python_version": "cp37", "requires_python": null, "size": 28892, "upload_time": "2019-07-25T07:43:30", "url": "https://files.pythonhosted.org/packages/a0/d0/11d23293b25aabd761b3e722ba38d232555759842185938126d12ced17e0/pyprojector-1.0.1-cp37-cp37m-win32.whl" }, { "comment_text": "", "digests": { "md5": "84eb59cdd912fdccafea37a49abc6677", "sha256": "ecd1b05262d8201cb54b31ee6cca30e441e4789efc87dcf23e7a6a548683fbfd" }, "downloads": -1, "filename": "pyprojector-1.0.1-cp37-cp37m-win_amd64.whl", "has_sig": false, "md5_digest": "84eb59cdd912fdccafea37a49abc6677", "packagetype": "bdist_wheel", "python_version": "cp37", "requires_python": null, "size": 30593, "upload_time": "2019-07-25T07:43:28", "url": "https://files.pythonhosted.org/packages/b1/13/fee169b59f72ca16c6d638de737882dc05d8ecc44c277099726694eac9fe/pyprojector-1.0.1-cp37-cp37m-win_amd64.whl" }, { "comment_text": "", "digests": { "md5": "925a99fcc6b95311c5ee6dca66caae34", "sha256": "154b2d764d32f2a4c848e878584144b5037eba310f10fbaa4a4ef3bbacfc2bd1" }, "downloads": -1, "filename": "pyprojector-1.0.1.tar.gz", "has_sig": false, "md5_digest": "925a99fcc6b95311c5ee6dca66caae34", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 103951, "upload_time": "2019-07-25T07:43:32", "url": "https://files.pythonhosted.org/packages/29/bc/7d35d82be9e3fe53bb1cc7ebf75224be7e7eff42b3440be04657161ca08a/pyprojector-1.0.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "8775827f3d06b5dd4b3a37882e528a39", "sha256": "f71b982ab4998f8f7142ff8b2ed6c04b31126a4be0021b11412bb7ea61bd6b79" }, "downloads": -1, "filename": "pyprojector-1.0.1-cp36-cp36m-win32.whl", "has_sig": false, "md5_digest": "8775827f3d06b5dd4b3a37882e528a39", "packagetype": "bdist_wheel", "python_version": "cp36", "requires_python": null, "size": 28888, "upload_time": "2019-07-25T07:43:26", "url": "https://files.pythonhosted.org/packages/1f/f7/bba560b2610805300b5f7ba297df2cb4260acfe8078c12fdaae7144a829c/pyprojector-1.0.1-cp36-cp36m-win32.whl" }, { "comment_text": "", "digests": { "md5": "9f2d578f18673c8b4bbf96c69a5f008d", "sha256": "00c336cac3b96c819938a236eb57f664faa11b7e26db9a012a08456074b86b03" }, "downloads": -1, "filename": "pyprojector-1.0.1-cp36-cp36m-win_amd64.whl", "has_sig": false, "md5_digest": "9f2d578f18673c8b4bbf96c69a5f008d", "packagetype": "bdist_wheel", "python_version": "cp36", "requires_python": null, "size": 30591, "upload_time": "2019-07-25T07:43:24", "url": "https://files.pythonhosted.org/packages/47/00/99153ba0f99c8d5cf744a5948082057ea49ee04ae9a40188e3a376efb73c/pyprojector-1.0.1-cp36-cp36m-win_amd64.whl" }, { "comment_text": "", "digests": { "md5": "4dd15cf7c3a45a402a8ae1b10d091c85", "sha256": "ee2c0dda3c0bc8ad521671643e242d7e4f0ba34d807734949dff17df4b7bd18e" }, "downloads": -1, "filename": "pyprojector-1.0.1-cp37-cp37m-win32.whl", "has_sig": false, "md5_digest": "4dd15cf7c3a45a402a8ae1b10d091c85", "packagetype": "bdist_wheel", "python_version": "cp37", "requires_python": null, "size": 28892, "upload_time": "2019-07-25T07:43:30", "url": "https://files.pythonhosted.org/packages/a0/d0/11d23293b25aabd761b3e722ba38d232555759842185938126d12ced17e0/pyprojector-1.0.1-cp37-cp37m-win32.whl" }, { "comment_text": "", "digests": { "md5": "84eb59cdd912fdccafea37a49abc6677", "sha256": "ecd1b05262d8201cb54b31ee6cca30e441e4789efc87dcf23e7a6a548683fbfd" }, "downloads": -1, "filename": "pyprojector-1.0.1-cp37-cp37m-win_amd64.whl", "has_sig": false, "md5_digest": "84eb59cdd912fdccafea37a49abc6677", "packagetype": "bdist_wheel", "python_version": "cp37", "requires_python": null, "size": 30593, "upload_time": "2019-07-25T07:43:28", "url": "https://files.pythonhosted.org/packages/b1/13/fee169b59f72ca16c6d638de737882dc05d8ecc44c277099726694eac9fe/pyprojector-1.0.1-cp37-cp37m-win_amd64.whl" }, { "comment_text": "", "digests": { "md5": "925a99fcc6b95311c5ee6dca66caae34", "sha256": "154b2d764d32f2a4c848e878584144b5037eba310f10fbaa4a4ef3bbacfc2bd1" }, "downloads": -1, "filename": "pyprojector-1.0.1.tar.gz", "has_sig": false, "md5_digest": "925a99fcc6b95311c5ee6dca66caae34", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 103951, "upload_time": "2019-07-25T07:43:32", "url": "https://files.pythonhosted.org/packages/29/bc/7d35d82be9e3fe53bb1cc7ebf75224be7e7eff42b3440be04657161ca08a/pyprojector-1.0.1.tar.gz" } ] }