{ "info": { "author": "Jon Wright", "author_email": "jonathan.wright@gmail.com", "bugtrack_url": null, "classifiers": [ "Environment :: Win32 (MS Windows)", "Environment :: X11 Applications", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Topic :: Multimedia :: Graphics", "Topic :: Multimedia :: Graphics :: 3D Rendering", "Topic :: Scientific/Engineering :: Visualization", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "# pyopengltk\r\n\r\nTkinter - OpenGL Frame using ctypes\r\n\r\n* [pyopengltk on Github](https://github.com/jonwright/pyopengltk)\r\n* [pyopengltk on PyPI](https://pypi.org/project/pyopengltk/)\r\n\r\nAn opengl frame for pyopengl-tkinter based on ctypes (no togl compilation)\r\n\r\nCollected together by Jon Wright, Jan 2018.\r\n\r\n## Basic Example\r\n\r\nThis example creates a window containing an `OpenGLFrame`\r\nfilling the entire window. We configure it to animate\r\n(constantly redraw) clearing the screen using a green color.\r\nA simple framerate counter is included.\r\nThe context information is printed to the terminal.\r\n\r\n```python\r\nimport time\r\nimport tkinter\r\nfrom OpenGL import GL\r\nfrom pyopengltk import OpenGLFrame\r\n\r\nclass AppOgl(OpenGLFrame):\r\n\r\n def initgl(self):\r\n \"\"\"Initalize gl states when the frame is created\"\"\"\r\n GL.glViewport(0, 0, self.width, self.height)\r\n GL.glClearColor(0.0, 1.0, 0.0, 0.0) \r\n self.start = time.time()\r\n self.nframes = 0\r\n\r\n def redraw(self):\r\n \"\"\"Render a single frame\"\"\"\r\n GL.glClear(GL.GL_COLOR_BUFFER_BIT)\r\n tm = time.time() - self.start\r\n self.nframes += 1\r\n print(\"fps\",self.nframes / tm, end=\"\\r\" )\r\n\r\n\r\nif __name__ == '__main__':\r\n root = tkinter.Tk()\r\n app = AppOgl(root, width=320, height=200)\r\n app.pack(fill=tkinter.BOTH, expand=tkinter.YES)\r\n app.animate = 1\r\n app.after(100, app.printContext)\r\n app.mainloop()\r\n```\r\n\r\nThe repository on Github also contains more examples.\r\n\r\n## Install\r\n\r\nFrom PyPI:\r\n\r\n```\r\npip install pyopengltk\r\n```\r\n\r\nFrom source:\r\n\r\n```\r\ngit clone https://github.com/jonwright/pyopengltk\r\ncd pyopengltk\r\npip install .\r\n```\r\n\r\n## Attributions\r\n\r\nBased on the work of others.\r\n\r\n### C + Tcl/Tk example:\r\n\r\n* Project URL : http://github.com/codeplea/opengl-tcltk/ (zlib license)\r\n* Article at : https://codeplea.com/opengl-with-c-and-tcl-tk\r\n\r\n### Python + Tkinter (no pyopengl) example:\r\n\r\n* Project URL : http://github.com/arcanosam/pytkogl/ (The Code Project Open License)\r\n* Article at: http://www.codeproject.com/Articles/1073475/OpenGL-in-Python-with-TKinter\r\n\r\n### pyopengl\r\n\r\n* Large regions of code copied from `pyopengl/Tk/__init__.py`.\r\n\r\n\r\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://github.com/jonwright/pyopengltk", "keywords": "opengl,window,context,tk,tkinter", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "pyopengltk", "package_url": "https://pypi.org/project/pyopengltk/", "platform": "", "project_url": "https://pypi.org/project/pyopengltk/", "project_urls": { "Homepage": "http://github.com/jonwright/pyopengltk" }, "release_url": "https://pypi.org/project/pyopengltk/0.0.3/", "requires_dist": [ "pyopengl" ], "requires_python": "", "summary": "An opengl frame for pyopengl-tkinter based on ctype", "version": "0.0.3" }, "last_serial": 5970716, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "70f3aac22e54092cbc8de6672ac20e9f", "sha256": "1866675a266ede154afb0b7ba3f7fbb543476fde4c7c4812cccc0179f91c6822" }, "downloads": -1, "filename": "pyopengltk-0.0.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "70f3aac22e54092cbc8de6672ac20e9f", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 9586, "upload_time": "2018-02-06T12:38:47", "url": "https://files.pythonhosted.org/packages/4f/25/ec5d46faea4c79cfa8dba03b2cfa3dc55eb3f623ab24e6cff6f7911c3da3/pyopengltk-0.0.1-py2.py3-none-any.whl" } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "58268321ddac1f0a8b778abad41b4dc8", "sha256": "1b9d623194d064ff995d9003d99a99500cf915b3c37d9a71a4902d7dae0cfba6" }, "downloads": -1, "filename": "pyopengltk-0.0.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "58268321ddac1f0a8b778abad41b4dc8", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 9633, "upload_time": "2018-05-17T17:20:21", "url": "https://files.pythonhosted.org/packages/aa/41/c3369a91032ac871efea2849688fdba151764df12d9d99e95d0b47713732/pyopengltk-0.0.2-py2.py3-none-any.whl" } ], "0.0.3": [ { "comment_text": "", "digests": { "md5": "9b3557a9df1518e186f966bf1cef02f4", "sha256": "fa01a3fcbe281ae52b13736c2f9b5249d2c2e94f005d591d5df390774ceec79a" }, "downloads": -1, "filename": "pyopengltk-0.0.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "9b3557a9df1518e186f966bf1cef02f4", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 11955, "upload_time": "2019-10-14T10:07:19", "url": "https://files.pythonhosted.org/packages/3f/7d/2d1b9393d7f1a5f9c3fd676ff5a606efeea772dbb872f3e93716d9fb4ce4/pyopengltk-0.0.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a865cd0cc2ea3f92d9b3b05c7996ad56", "sha256": "31f93c50cecf168742cc6767afa19b4953f7257ca0a41be1ad39490455cfc6f2" }, "downloads": -1, "filename": "pyopengltk-0.0.3.tar.gz", "has_sig": false, "md5_digest": "a865cd0cc2ea3f92d9b3b05c7996ad56", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10266, "upload_time": "2019-10-14T10:07:22", "url": "https://files.pythonhosted.org/packages/a5/24/8d7bf9d942d0902931bf15ee22f8538a7bf68c46b3f918500fd81cb5b31a/pyopengltk-0.0.3.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "9b3557a9df1518e186f966bf1cef02f4", "sha256": "fa01a3fcbe281ae52b13736c2f9b5249d2c2e94f005d591d5df390774ceec79a" }, "downloads": -1, "filename": "pyopengltk-0.0.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "9b3557a9df1518e186f966bf1cef02f4", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 11955, "upload_time": "2019-10-14T10:07:19", "url": "https://files.pythonhosted.org/packages/3f/7d/2d1b9393d7f1a5f9c3fd676ff5a606efeea772dbb872f3e93716d9fb4ce4/pyopengltk-0.0.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a865cd0cc2ea3f92d9b3b05c7996ad56", "sha256": "31f93c50cecf168742cc6767afa19b4953f7257ca0a41be1ad39490455cfc6f2" }, "downloads": -1, "filename": "pyopengltk-0.0.3.tar.gz", "has_sig": false, "md5_digest": "a865cd0cc2ea3f92d9b3b05c7996ad56", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10266, "upload_time": "2019-10-14T10:07:22", "url": "https://files.pythonhosted.org/packages/a5/24/8d7bf9d942d0902931bf15ee22f8538a7bf68c46b3f918500fd81cb5b31a/pyopengltk-0.0.3.tar.gz" } ] }