======================
Tkinter-Async-Execute
======================
Tkinter-Async-Execute is a small library, that provides a way to run an ``asyncio`` event loop alongside Tkinter in
a separate thread.
It provides a way to execute methods of tkinter widgets from inside async functions and ability to call async functions
from functions (commands / events) running in tkinter's thread. The former can be called from any thread (or async function)
and the latter only from functions (commands / events) in tkinter's thread.
To show progress of an async function, submitted from tkinter, an async execution window widget is available,
which will display any text printed with the ``print()`` function (or any stdout write requests).
Installation
==============
.. code-block:: bash
pip install tkinter-async-execute
Documentation
=============
All documentation is available on https://tkinter-async-execute.readthedocs.io/.
Example
=============
.. code-block:: python
from tkinter import ttk
import tkinter as tk
import asyncio
import tk_async_execute as tae
async def async_function():
# Call tkinter widget methods.
print("Disabling button")
tae.tk_execute(bnt.config, state="disabled") # Thread safe exection
await asyncio.sleep(5)
print("Enabling button")
tae.tk_execute(bnt.config, state="normal")
await asyncio.sleep(2)
# Change tkinter text
print("Renaming button")
tae.tk_execute(bnt.config, text="Example 2")
await asyncio.sleep(2)
def button_clicked():
# Call async function
tae.async_execute(async_function(), wait=True, visible=True, pop_up=True, callback=None, master=root)
# Close application
root.quit()
if __name__ == "__main__":
root = tk.Tk()
bnt = ttk.Button(root, text="Click me", command=button_clicked, width=20)
bnt.pack()
tae.start() # Starts the asyncio event loop in a different thread.
root.mainloop() # Main Tkinter loop
tae.stop() # Stops the event loop and closes it.
Raw data
{
"_id": null,
"home_page": null,
"name": "tkinter-async-execute",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": null,
"keywords": "Tkinter, asyncio, Async execute, Execution progress window, Thread-safe",
"author": "David Hozic",
"author_email": null,
"download_url": "https://files.pythonhosted.org/packages/8c/9c/0ade9cbc976c9b665e60e762d0662a8185277d047ae6327ee4d5465a422e/tkinter_async_execute-1.3.2.tar.gz",
"platform": null,
"description": "======================\nTkinter-Async-Execute\n======================\n\nTkinter-Async-Execute is a small library, that provides a way to run an ``asyncio`` event loop alongside Tkinter in\na separate thread.\n\nIt provides a way to execute methods of tkinter widgets from inside async functions and ability to call async functions\nfrom functions (commands / events) running in tkinter's thread. The former can be called from any thread (or async function)\nand the latter only from functions (commands / events) in tkinter's thread.\n\nTo show progress of an async function, submitted from tkinter, an async execution window widget is available,\nwhich will display any text printed with the ``print()`` function (or any stdout write requests).\n\n\nInstallation\n==============\n.. code-block:: bash\n\n pip install tkinter-async-execute\n\nDocumentation\n=============\nAll documentation is available on https://tkinter-async-execute.readthedocs.io/.\n\n\nExample\n=============\n.. code-block:: python\n\n from tkinter import ttk\n import tkinter as tk\n import asyncio\n\n import tk_async_execute as tae\n\n\n async def async_function():\n # Call tkinter widget methods.\n print(\"Disabling button\")\n tae.tk_execute(bnt.config, state=\"disabled\") # Thread safe exection\n await asyncio.sleep(5)\n print(\"Enabling button\")\n tae.tk_execute(bnt.config, state=\"normal\")\n await asyncio.sleep(2)\n\n # Change tkinter text\n print(\"Renaming button\")\n tae.tk_execute(bnt.config, text=\"Example 2\")\n await asyncio.sleep(2)\n\n\n def button_clicked():\n # Call async function\n tae.async_execute(async_function(), wait=True, visible=True, pop_up=True, callback=None, master=root)\n\n # Close application\n root.quit()\n\n\n if __name__ == \"__main__\":\n root = tk.Tk()\n bnt = ttk.Button(root, text=\"Click me\", command=button_clicked, width=20)\n bnt.pack()\n\n tae.start() # Starts the asyncio event loop in a different thread.\n root.mainloop() # Main Tkinter loop\n tae.stop() # Stops the event loop and closes it.\n",
"bugtrack_url": null,
"license": null,
"summary": "Simple library that allows interaction between Tkinter and asyncio event loop running in a seperate thread.",
"version": "1.3.2",
"project_urls": null,
"split_keywords": [
"tkinter",
" asyncio",
" async execute",
" execution progress window",
" thread-safe"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "d30a74040374f46078811cff85c193605f3cf72fc9862080a5c2807b0e344198",
"md5": "5d37764c784fde658cb5cc7994885122",
"sha256": "723199a86c2b89ebf2d8a6dc36d4e59657ef2c3506366899c14bdfdb476f623e"
},
"downloads": -1,
"filename": "tkinter_async_execute-1.3.2-py3-none-any.whl",
"has_sig": false,
"md5_digest": "5d37764c784fde658cb5cc7994885122",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.8",
"size": 10546,
"upload_time": "2024-09-26T22:48:27",
"upload_time_iso_8601": "2024-09-26T22:48:27.688367Z",
"url": "https://files.pythonhosted.org/packages/d3/0a/74040374f46078811cff85c193605f3cf72fc9862080a5c2807b0e344198/tkinter_async_execute-1.3.2-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "8c9c0ade9cbc976c9b665e60e762d0662a8185277d047ae6327ee4d5465a422e",
"md5": "039ca09924f8de8b75699c76630fb773",
"sha256": "60819696b0a8ed2e66746b6cc61cd0ffc0fd46e430b5edf2f595d040e6efc216"
},
"downloads": -1,
"filename": "tkinter_async_execute-1.3.2.tar.gz",
"has_sig": false,
"md5_digest": "039ca09924f8de8b75699c76630fb773",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 8219,
"upload_time": "2024-09-26T22:48:28",
"upload_time_iso_8601": "2024-09-26T22:48:28.836151Z",
"url": "https://files.pythonhosted.org/packages/8c/9c/0ade9cbc976c9b665e60e762d0662a8185277d047ae6327ee4d5465a422e/tkinter_async_execute-1.3.2.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-09-26 22:48:28",
"github": false,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"lcname": "tkinter-async-execute"
}