{ "info": { "author": "Paul Sokolovsky", "author_email": "pfalcon@users.sourceforge.net", "bugtrack_url": null, "classifiers": [], "description": "picotui\n=======\n\nPicotui is a Text User Interface (TUI) widget library for Python3.\nIt is known to work with CPython3 and\n`Pycopy `_ (Unix version is\nofficially supported for the latter), but should work with any\nPython3 implementation which allows to access stdin/stdout file\ndescriptors.\n\nYou can learn more about it with the help of a virtual Q&A session:\n\nQ: There're a few TUI libraries for Python, why yet another one?\n\nA: Urwid is one well-known such TUI library. Here's an entry from its\nFAQ: \"How do I create drop-downs, floating windows, and scroll bars? -\nYou need to start writing some fairly complex widgets. This\nfunctionality hasn't been added to Urwid yet.\" So, Urwid is a\nwidget library which doesn't have dropdowns. Version 0.8.0 of\nUrwid was imported into SVN (and later Git) in 2004. Urwid doesn't\nhave dropdowns and stuff for 10+ years.\n\nQ: Hey, but you cut off the answer from Urwid FAQ. It says: \"but if you\nare willing to write it, we do accept patches\". Why didn't you implement\nthose widgets for Urwid and contribute them?\n\nA: Why didn't you? No, wait, that's not productive. I didn't implement\nthem for Urwid because I don't like its architecture and the fact that\nits widget set is rather weak (so it's hard to write new widgets - there\nare not enough examples to start from). And don't get me wrong, but the\nfact that nobody wrote those widgets for Urwid during 10+ years, got to\nmean something. However, I tried to hack on another, less, but still\nknown Python TUI library - Npyscreen. Its widget set is much more\nadvanced and usable. But - it still has some architectural choices\nwhich makes extending it and overriding some behaviors problematic.\nI also found its project management a bit unresponsive. So, after making\na dozen of commits to my fork, I thought it's time to get some breath and\nstarted picotui.\n\nQ: So, sun must shine bright in the picotui land, and it must be the best\nlibrary out there?\n\nA: Alas, no. Let me start with the fact that most TUI libraries are based\non ``curses`` library for terminal screen management. It makes sure that if\nyou update a screen, only the minimal set of updates is made. This was\nvery important at the era of 300 baud serial connections. Let's count:\n300 baud is about 30 bytes/s, and the standard VT100 screen is 80*24 = ~2K.\nDouble that for attributes. So, transferring a complete screen to show\nto user would take 2 mins. If you draw the same screen twice (no changes in\ncontent), it would take 4 mins. ``curses`` library cuts that back to mere 2\nmins. So, alas, ``picotui`` doesn't use curses. That's based on the fact\nthat picotui wants to be compatible with Pycopy, and its philosophy\nis minimalism - if it's possible to do screen output without ``curses``,\nlet's do just that. It's also grounded in the fact that nobody uses\n300 baud modems any longer, most apps are run in a local terminal emulator\nwith instant updates, most of the remaining are run over LANs which\nalso offer fast updates. The modern basic serial connection speed is\n115200 which is still too slow for real-time fullscreen updates though.\nThat's why I say \"alas\". Beyond the optimized screen updates, ``picotui``\nlacks many other things too: e.g., double-buffering (so redrawing the\nprevious screen content behind pop-ups is up to you), it lacks geometry\nmanagers, so calculating coordinates is up to you, etc. Yes, just like\nthat - I lacked widgets the most, and that's what I implemented. The rest\nis just KISS.\n\nQ: But that's really sad!\n\nA: Indeed, it is. The only good news is that now you have a choice: if\nyou want your app work well with 300 baud modems, you can use other\nlibraries, and if you want widgets, you can use `picotui`.\n\nQ: So many words, where's a mandatory screenshot?\n\nA: Sure:\n\n.. image:: https://raw.githubusercontent.com/pfalcon/picotui/master/picotui.png\n\nDocumentation\n-------------\n\nPicotui is an experimental WIP project, and the best documentation currently\nis the source code (https://github.com/pfalcon/picotui/tree/master/picotui)\nand examples (see below).\n\nExamples\n--------\n\n* example_widgets.py - Shows repertoire of widgets, inside a dialog.\n* example_menu.py - Shows a \"fullscreen\" application with a main menu.\n* example_dialogs.py - Shows some standard dialogs.\n* examples/ - More assorted examples.\n\nKnown Issues\n------------\n\nPay attention to what Unicode font you use in your console. Some Linux\ndistributions, e.g. Ubuntu, are known to have a broken Unicode font\ninstalled by default, which causes various visual artifacts (specifically,\nUbuntu Mono font isn't really monospace - many Unicode pseudographic\ncharacters have double (or so) width, box-drawing symbols have gaps, etc.)\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/pfalcon/picotui", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "picotui", "package_url": "https://pypi.org/project/picotui/", "platform": "", "project_url": "https://pypi.org/project/picotui/", "project_urls": { "Homepage": "https://github.com/pfalcon/picotui" }, "release_url": "https://pypi.org/project/picotui/1.0.1/", "requires_dist": null, "requires_python": "", "summary": "A simple text user interface (TUI) library.", "version": "1.0.1" }, "last_serial": 5571427, "releases": { "0.5": [ { "comment_text": "", "digests": { "md5": "1ce6b9676ee1b29c47330780df42a291", "sha256": "f1911476a74c88ed1c81d85c6a8e3fc107749cf623d84bae10a31189b3fdd058" }, "downloads": -1, "filename": "picotui-0.5.tar.gz", "has_sig": false, "md5_digest": "1ce6b9676ee1b29c47330780df42a291", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9888, "upload_time": "2016-06-27T15:50:10", "url": "https://files.pythonhosted.org/packages/c3/15/c074e5de067b621817b3400a378976b28426afc0ffae3adfc1b58ae4e8e6/picotui-0.5.tar.gz" } ], "0.6": [ { "comment_text": "", "digests": { "md5": "cc22319a47b4ae5c36f03b3c3a415825", "sha256": "061ead39b027bcf172c95aa85880a55d93c9db19cb27146c8ea3fa246176350e" }, "downloads": -1, "filename": "picotui-0.6.tar.gz", "has_sig": false, "md5_digest": "cc22319a47b4ae5c36f03b3c3a415825", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10812, "upload_time": "2016-08-15T21:23:34", "url": "https://files.pythonhosted.org/packages/f7/af/2acf3c26e137e24eb8088a0c14926518dd3d9a2f6a882eacde4904af5173/picotui-0.6.tar.gz" } ], "0.7": [ { "comment_text": "", "digests": { "md5": "2e81e54a33934fda9cd4726d2ec8f2b0", "sha256": "8f578b9852b4e5b06b9c23cd2a5604d5bb800610f9b987272f1e0561580d9480" }, "downloads": -1, "filename": "picotui-0.7.tar.gz", "has_sig": false, "md5_digest": "2e81e54a33934fda9cd4726d2ec8f2b0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12499, "upload_time": "2016-08-18T22:40:48", "url": "https://files.pythonhosted.org/packages/d2/cb/518d909e9dd9ab4b26120128a156568f0544331f88d408d3e0dbcf0c7c70/picotui-0.7.tar.gz" } ], "0.8": [ { "comment_text": "", "digests": { "md5": "1ebc7aa1d05ea50a527879938733c24b", "sha256": "075220e7497197981a37b227d04f64481b206ad5976dfded5bc729f6f701c4fe" }, "downloads": -1, "filename": "picotui-0.8.tar.gz", "has_sig": false, "md5_digest": "1ebc7aa1d05ea50a527879938733c24b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14129, "upload_time": "2016-08-25T21:47:07", "url": "https://files.pythonhosted.org/packages/6a/5d/16c3a54bb1f7a82478a7de46c57453e30cb7433e13eebdb914ed71977f1e/picotui-0.8.tar.gz" } ], "0.8.1": [ { "comment_text": "", "digests": { "md5": "4ed87ed06c35d76c944140fb2a05818a", "sha256": "80caf8d7de815e8518fe2a598e4fdd2638b8bd5eadacdc888929ee6e8297e28e" }, "downloads": -1, "filename": "picotui-0.8.1.tar.gz", "has_sig": false, "md5_digest": "4ed87ed06c35d76c944140fb2a05818a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14141, "upload_time": "2016-09-03T23:50:42", "url": "https://files.pythonhosted.org/packages/d7/65/b546c7c3369b9f3bb0e265dc02a1ee1fe6a440abd6846d5e93e2093ed909/picotui-0.8.1.tar.gz" } ], "0.8.2": [ { "comment_text": "", "digests": { "md5": "b8832b8a73fa2a174415d587c965329a", "sha256": "fd5d5964449782474c26925433222898836fa46c56bc6685c20281f7797d2065" }, "downloads": -1, "filename": "picotui-0.8.2.tar.gz", "has_sig": false, "md5_digest": "b8832b8a73fa2a174415d587c965329a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14169, "upload_time": "2016-10-07T21:31:05", "url": "https://files.pythonhosted.org/packages/a5/27/4c3515251555f368685f7e1e70e22a3aefd2640a5a701447cf0e914b34d6/picotui-0.8.2.tar.gz" } ], "0.9.1": [ { "comment_text": "", "digests": { "md5": "6246ed5a6fc00d133fc7b04f4c64a469", "sha256": "de85d43e094036da909307a226501b4ac8f1f05df0ecea1d3ce9dcc7dfc1dc71" }, "downloads": -1, "filename": "picotui-0.9.1.tar.gz", "has_sig": false, "md5_digest": "6246ed5a6fc00d133fc7b04f4c64a469", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14772, "upload_time": "2017-05-22T11:02:24", "url": "https://files.pythonhosted.org/packages/8c/c5/7e482bc1e468427c7c09c6fdcf484d224f04f94ccbb808f51dcf355f98bc/picotui-0.9.1.tar.gz" } ], "0.9.2": [ { "comment_text": "", "digests": { "md5": "01f2186db784e29ec025aa57b4d719e6", "sha256": "e562bae312473aec70e0569b72ac1dac52415a925ddcca3dcda82d7e7aae0040" }, "downloads": -1, "filename": "picotui-0.9.2.tar.gz", "has_sig": false, "md5_digest": "01f2186db784e29ec025aa57b4d719e6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15209, "upload_time": "2017-11-24T08:55:20", "url": "https://files.pythonhosted.org/packages/89/02/4aafa3c94c1597bd085ce047dc7e01d9f47c0b45e193d8f319e2296ca496/picotui-0.9.2.tar.gz" } ], "0.9.3": [ { "comment_text": "", "digests": { "md5": "5fe11d1d254017f913e7964a2115a193", "sha256": "b2b1706d353b7c88fe327b280c73c30b6464d93cd3626d860e8e28ac99a1ff8b" }, "downloads": -1, "filename": "picotui-0.9.3.tar.gz", "has_sig": false, "md5_digest": "5fe11d1d254017f913e7964a2115a193", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15242, "upload_time": "2017-12-09T09:57:07", "url": "https://files.pythonhosted.org/packages/c5/0f/e4eb6f798867de21921f9ef27d9346e9b360efdcea41c7cf6f825fd5293d/picotui-0.9.3.tar.gz" } ], "0.9.4": [ { "comment_text": "", "digests": { "md5": "d3e3123b1bd497c7755f0dd52a83db44", "sha256": "534bb0256968a68cd86170baf9c9520e074e9e4838ebd2d8ff3ff336f6ac0c27" }, "downloads": -1, "filename": "picotui-0.9.4.tar.gz", "has_sig": false, "md5_digest": "d3e3123b1bd497c7755f0dd52a83db44", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15274, "upload_time": "2017-12-25T10:34:53", "url": "https://files.pythonhosted.org/packages/a1/80/17dc6f930080a245d16d70ed656bfd60c4ecfba562aad6c7df8260daac5c/picotui-0.9.4.tar.gz" } ], "1.0": [ { "comment_text": "", "digests": { "md5": "236f50c8067458377a5944c8a92b757b", "sha256": "210c1f9cb238abac139e880658c845b3b3c07e6b5271d2e5045c161c9838fbd0" }, "downloads": -1, "filename": "picotui-1.0.tar.gz", "has_sig": false, "md5_digest": "236f50c8067458377a5944c8a92b757b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15715, "upload_time": "2018-02-17T11:07:42", "url": "https://files.pythonhosted.org/packages/72/c4/2f3ee430489d2970e4b569284f7fcdeecd7fe6024025472356f06f62954c/picotui-1.0.tar.gz" } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "a0751321ab1c8045b5b21e5bea5394d2", "sha256": "01d74f2a8ba64b05c4916c6302dc218553f7b4aaaa00669fcdd0e014d2c62d01" }, "downloads": -1, "filename": "picotui-1.0.1.tar.gz", "has_sig": false, "md5_digest": "a0751321ab1c8045b5b21e5bea5394d2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13400, "upload_time": "2019-07-23T09:25:55", "url": "https://files.pythonhosted.org/packages/5a/b4/085123940561c8cab8d9562f4139d30c26a85f0a512381c26d635cd4ff62/picotui-1.0.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "a0751321ab1c8045b5b21e5bea5394d2", "sha256": "01d74f2a8ba64b05c4916c6302dc218553f7b4aaaa00669fcdd0e014d2c62d01" }, "downloads": -1, "filename": "picotui-1.0.1.tar.gz", "has_sig": false, "md5_digest": "a0751321ab1c8045b5b21e5bea5394d2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13400, "upload_time": "2019-07-23T09:25:55", "url": "https://files.pythonhosted.org/packages/5a/b4/085123940561c8cab8d9562f4139d30c26a85f0a512381c26d635cd4ff62/picotui-1.0.1.tar.gz" } ] }