Simple library that allows interaction between Tkinter and asyncio event loop running in a seperate thread.
Project description
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
pip install tkinter-async-execute
Documentation
All documentation is available on https://tkinter-async-execute.readthedocs.io/.
Example
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.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file tkinter-async-execute-1.1.0.tar.gz
.
File metadata
- Download URL: tkinter-async-execute-1.1.0.tar.gz
- Upload date:
- Size: 7.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 81dd3e78d7f95e5e8a38f073981873b98cbae85beb07c4140648da1ce3235152 |
|
MD5 | 9a3e31261a40fcc830db8669394e2af0 |
|
BLAKE2b-256 | c6c945e60b9311a8510da99afe9baed3a73328fbfdf563965487f12a3034e474 |
File details
Details for the file tkinter_async_execute-1.1.0-py3-none-any.whl
.
File metadata
- Download URL: tkinter_async_execute-1.1.0-py3-none-any.whl
- Upload date:
- Size: 9.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | cf5b60f5759e3ee190c79fdc8f636202d50eeefee1ed6f2c0e05328e3ad56cce |
|
MD5 | aee384a4eb7ebb70f61199570398b4cc |
|
BLAKE2b-256 | 57243b78f6620d98bc08dd4164ff597ec291c556bc06d387d0dff57de0621e16 |