{ "info": { "author": "Pascal Maximilian Bremer", "author_email": "", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: 3.8", "Topic :: Software Development" ], "description": "# Declarative tkinter UI with reactive data binding\n\n![Banner](src-docs/img/Banner_no_bg.png)\n\n# Features\n- Drag and Drop support (tkDnD)\n- Supports async by default (powered by asyncio)\n- Two-way data binding\n- Flexible layout by design\n- Application scrolls automatically\n- Simple layout syntax powered by Pug (former Jade)\n- Widget parameter support inline python scripting\n- ttk themes included\n- Lightweight and fast\n- Add any custom tkinter widget\n\n![Designer](src-docs/img/designer.GIF)\n\n# Installation\nMake sure your python installation is 3.7 or higher.\n\nYou need the tk extension **tkDnD** for this framework. \nThis can be automatically installed via pip argument. Make sure the python directory is writable (e.g. on Mac OSX, Python library are installed to /System/Library, which cannot be modified, even with sudo!).\n\n```pip install layoutx``` (minimal version)\n\n```pip install layoutx[more_widgets, styles]``` (full version)\n\n```python -m layoutx.install_tkdnd``` (install tkdnd)\n\nThe command line tool: `lxdesigner` can be used to easily design some forms.\n\nFor lxdesigner to function, you need to install addon **more widgets**.\n\n# Addons\nSome dependencies of this project have a GPL v3 license. They are excluded into separate addons.\nPlease note by installing these dependencies, you confirm to the GPL license agreement.\n\nThis project itself is licensed under MIT.\n\n## more widgets:\nMore information see: [ttkwidgets Github](https://github.com/TkinterEP/ttkwidgets/)\n\n - Input\n - ComboBox\n - TextArea\n - Scale\n\n```pip install layoutx[more_widgets]```\n\n## ttk themes:\nMore information see: [ttkthemes Github](https://github.com/TkinterEP/ttkthemes)\n\n```pip install layoutx[styles]```\n\n# Getting started\n\n``` python\nfrom layoutx import app # Import the app singleton\nfrom layoutx.store import create_store\nfrom layoutx.view import View, ResizeOption\n\nstore = create_store({}, { \"name\": \"World\" })\n\nclass RootView(View):\n geometry = \"250x50+100+100\"\n title = \"My first app\"\n resizable = ResizeOption.NONE\n template = \"\"\"\\\nScrollFrame\n Box(orient=\"horizontal\")\n Label Hello\n Input(value=\"{{name}}\")\n Button(command=\"{say_my_name}\") Say my name!\n\"\"\"\n def say_my_name(self):\n print(self.store.state[\"name\"])\n\nif __name__ == \"__main__\":\n app.setup(store=store, rootView=RootView)\n app.run()\n```\n\n![Getting Started](src-docs/img/index/getting-started.png)\n\n# Documentation\n\nRead the [documentation](https://bomberus.gitlab.io/LayoutX/) for more information.", "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/Bomberus/LayoutX", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "layoutx", "package_url": "https://pypi.org/project/layoutx/", "platform": "", "project_url": "https://pypi.org/project/layoutx/", "project_urls": { "Homepage": "https://github.com/Bomberus/LayoutX" }, "release_url": "https://pypi.org/project/layoutx/1.2/", "requires_dist": null, "requires_python": "", "summary": "Declarative tkinter layout engine with reactive data binding", "version": "1.2", "yanked": false, "yanked_reason": null }, "last_serial": 6633378, "releases": { "1.2": [ { "comment_text": "", "digests": { "md5": "1ac24e49ff1ae75d0723c26ffdbe81a4", "sha256": "ebe828c50f642b814dee9de4fe9ac2af1f4e2c1dada93cc5bbca59c8c551fa0a" }, "downloads": -1, "filename": "layoutx-1.2.tar.gz", "has_sig": false, "md5_digest": "1ac24e49ff1ae75d0723c26ffdbe81a4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 176829, "upload_time": "2020-02-14T20:08:06", "upload_time_iso_8601": "2020-02-14T20:08:06.196762Z", "url": "https://files.pythonhosted.org/packages/47/74/cfb13148ad8b5b3adf7759e85049a505227b445e6f27c705ade4aa2330a1/layoutx-1.2.tar.gz", "yanked": false, "yanked_reason": null } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "1ac24e49ff1ae75d0723c26ffdbe81a4", "sha256": "ebe828c50f642b814dee9de4fe9ac2af1f4e2c1dada93cc5bbca59c8c551fa0a" }, "downloads": -1, "filename": "layoutx-1.2.tar.gz", "has_sig": false, "md5_digest": "1ac24e49ff1ae75d0723c26ffdbe81a4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 176829, "upload_time": "2020-02-14T20:08:06", "upload_time_iso_8601": "2020-02-14T20:08:06.196762Z", "url": "https://files.pythonhosted.org/packages/47/74/cfb13148ad8b5b3adf7759e85049a505227b445e6f27c705ade4aa2330a1/layoutx-1.2.tar.gz", "yanked": false, "yanked_reason": null } ], "vulnerabilities": [] }