{ "info": { "author": "Joeri Jongbloets", "author_email": "joeri@jongbloets.net", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5" ], "description": "========\nJules-tk\n========\n\nA small MVC Framework for Tkinter.\n\nThe model is Thread-safe, but since Tk is not thread safe, the view and controllers are not thread-safe.\nIn threaded applications; use different threads to update the model and run a polling (using view.after) to update\nthe view.\n\nDesign structure\n================\n\nMVC: Model-View-Controller, is a well-known and wide practiced design paradigm for designing Graphical User Interfaces (GUI's).\n\nJules-tk provides the MVC structure, similar to what web-frameworks as django do. There is one entry-point to the application\n(app.py) which will load controllers. The controllers will then initialize the models it needs and the view it works with.\n\nThe Controller\n--------------\n\nController serve as the logic hub of the application and bridge from view and model.\n\nThe View\n--------\n\n* Frame: Non-interacting Frame widget.\n* View: interacting, requires a controller.\n* ViewSet: combine multiple views into one window.\n\nThe Model\n---------\n\nModels store and manipulate data contained by the application. They also serve as a gateway in multi-threaded\napplications: Meaning, multiple threads can share information via the Model. One could - for example - use threads to\n manipulate the Model, while the View and Controller are updated in the MainThread using the Model.\n\n\nObserver and Observable\n=======================\n\nThe observer-observable paradigm enables objects to notify other objects upon an important change.\nModels are by default observable, but Controllers need to inherit the Observer class.\nSee the `click_me` example for a demonstration of this paradigm.\n\nBe aware that this paradigm is not easy to implement in multi-threaded applications. In those cases it may be better\nto use a polling mechanism in the MainThread to periodically update the View.\n\nApplication flow\n================\n\n1. app.py, calls a controller\n2. controller loads model\n3. controller loads view\n4. app.py enters mainloop\n5. app.py exits mainloop\n6. app.py asks controllers to stop\n7. controller asks view to stop\n\nWhile in the main loop\n\n1. view receives to user input\n2. view calls controller\n3. controller handles input - acts on model\n5. controller handles update - acts on view\n\nPlotting\n========\n\nBasic plotting is implemented using matplotlib with the `plot.Plot` Widget.\nSee the `random_plot` example for a demonstration.", "description_content_type": null, "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/jjongbloets/julesTk", "keywords": "tkinter mvc", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "julesTk", "package_url": "https://pypi.org/project/julesTk/", "platform": "", "project_url": "https://pypi.org/project/julesTk/", "project_urls": { "Homepage": "https://github.com/jjongbloets/julesTk" }, "release_url": "https://pypi.org/project/julesTk/0.3.3/", "requires_dist": null, "requires_python": "", "summary": "MVC Framework for TKinter", "version": "0.3.3" }, "last_serial": 2887508, "releases": { "0.2.4": [ { "comment_text": "", "digests": { "md5": "22ebdcafd0f6f80973665c2e5d01d8c1", "sha256": "48ef92e4af9a9501e8c15822ef3ddf45509816bc03f5909c03b9c42e54ad88a6" }, "downloads": -1, "filename": "julesTk-0.2.4-py2-none-any.whl", "has_sig": false, "md5_digest": "22ebdcafd0f6f80973665c2e5d01d8c1", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 12910, "upload_time": "2017-02-09T19:43:37", "url": "https://files.pythonhosted.org/packages/9f/91/e86cd5cf95f79745e97b886d569f99c34db759407326b5206639295d8ccf/julesTk-0.2.4-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8839e370037840984f3023976f160b7e", "sha256": "ce607346379e9d5b30c5c00be2f0e7792ad00a2c6f18978d5b335a78cef9473a" }, "downloads": -1, "filename": "julesTk-0.2.4.tar.gz", "has_sig": false, "md5_digest": "8839e370037840984f3023976f160b7e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9931, "upload_time": "2017-02-09T19:43:27", "url": "https://files.pythonhosted.org/packages/94/03/3c8a489112f9f17744cea19b3fe7b60a69204399cbe36224a0bd3b91712a/julesTk-0.2.4.tar.gz" } ], "0.3.0a0": [ { "comment_text": "", "digests": { "md5": "89d6769878c7825c834ee3b22af8119a", "sha256": "34da997c1f445ea8387f0ba9663c1f0118dea222f4d92c84aa4cf2dd1f0af040" }, "downloads": -1, "filename": "julesTk-0.3.0a0-py2-none-any.whl", "has_sig": false, "md5_digest": "89d6769878c7825c834ee3b22af8119a", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 17575, "upload_time": "2017-02-15T14:07:44", "url": "https://files.pythonhosted.org/packages/06/81/94cf518b7d3bb0d09716e9b372a8427cbc6c21f557f519cfc3aeb05fad56/julesTk-0.3.0a0-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d5d8930ffdaf518f52843058a093bd53", "sha256": "68c1fc5dd7601cc5aa9d6180642eda5f0ca3d54ab972df13abb9d88367881f67" }, "downloads": -1, "filename": "julesTk-0.3.0a0.tar.gz", "has_sig": false, "md5_digest": "d5d8930ffdaf518f52843058a093bd53", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12710, "upload_time": "2017-02-15T14:07:34", "url": "https://files.pythonhosted.org/packages/ad/22/5abb834eaeb8b302136e1a33519b6b73f68ef9d763f8fcc923e95f92b24a/julesTk-0.3.0a0.tar.gz" } ], "0.3.2": [ { "comment_text": "", "digests": { "md5": "9d4870f9723237133dbd84e519309d9a", "sha256": "828aea438b10938f4c6a1adc29a7b23fd439a030254ec147ec45397b4f71686d" }, "downloads": -1, "filename": "julesTk-0.3.2-py2-none-any.whl", "has_sig": false, "md5_digest": "9d4870f9723237133dbd84e519309d9a", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 20433, "upload_time": "2017-05-17T13:21:21", "url": "https://files.pythonhosted.org/packages/ce/d4/771ded0a73d876f0caf62259126e7a29c730e10eaea0993b1acb42f63928/julesTk-0.3.2-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "cb05a202aa802976e4c0296cc05f0805", "sha256": "88e501fd0969bf6469bbdc07fa858bf5cc1a22a49435c0c9b8cee9c947c05e58" }, "downloads": -1, "filename": "julesTk-0.3.2.tar.gz", "has_sig": false, "md5_digest": "cb05a202aa802976e4c0296cc05f0805", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14373, "upload_time": "2017-05-17T13:21:12", "url": "https://files.pythonhosted.org/packages/33/b8/c667610e0e55f0fef4ad1874da2dea1268466ece12f563ac70a62e75e30a/julesTk-0.3.2.tar.gz" } ], "0.3.3": [ { "comment_text": "", "digests": { "md5": "0d4d815a894a6fbbe152715c068e9ca4", "sha256": "4a599c6b672edf725c3e3a7afc38f975773726716b669b25f12020d7f437fcef" }, "downloads": -1, "filename": "julesTk-0.3.3-py2-none-any.whl", "has_sig": false, "md5_digest": "0d4d815a894a6fbbe152715c068e9ca4", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 22612, "upload_time": "2017-05-20T16:37:58", "url": "https://files.pythonhosted.org/packages/22/05/33a7e9e11be9ac37b877919f753b4d205da45cf753bb702595f81b177e1c/julesTk-0.3.3-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c9d613615e48f087148d5e8546bda451", "sha256": "36da16242cc4d7a12204e3c07328e9ae54f47626de793ae2af4cc73909b35240" }, "downloads": -1, "filename": "julesTk-0.3.3.tar.gz", "has_sig": false, "md5_digest": "c9d613615e48f087148d5e8546bda451", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16366, "upload_time": "2017-05-20T16:37:48", "url": "https://files.pythonhosted.org/packages/d3/28/745b15c08cad9e2dba893db357304baa117b42beddd55c515e368dea09df/julesTk-0.3.3.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "0d4d815a894a6fbbe152715c068e9ca4", "sha256": "4a599c6b672edf725c3e3a7afc38f975773726716b669b25f12020d7f437fcef" }, "downloads": -1, "filename": "julesTk-0.3.3-py2-none-any.whl", "has_sig": false, "md5_digest": "0d4d815a894a6fbbe152715c068e9ca4", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 22612, "upload_time": "2017-05-20T16:37:58", "url": "https://files.pythonhosted.org/packages/22/05/33a7e9e11be9ac37b877919f753b4d205da45cf753bb702595f81b177e1c/julesTk-0.3.3-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c9d613615e48f087148d5e8546bda451", "sha256": "36da16242cc4d7a12204e3c07328e9ae54f47626de793ae2af4cc73909b35240" }, "downloads": -1, "filename": "julesTk-0.3.3.tar.gz", "has_sig": false, "md5_digest": "c9d613615e48f087148d5e8546bda451", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16366, "upload_time": "2017-05-20T16:37:48", "url": "https://files.pythonhosted.org/packages/d3/28/745b15c08cad9e2dba893db357304baa117b42beddd55c515e368dea09df/julesTk-0.3.3.tar.gz" } ] }