Skip to main content

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

tkinter_async_execute-1.4.0.tar.gz (8.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

tkinter_async_execute-1.4.0-py3-none-any.whl (11.4 kB view details)

Uploaded Python 3

File details

Details for the file tkinter_async_execute-1.4.0.tar.gz.

File metadata

  • Download URL: tkinter_async_execute-1.4.0.tar.gz
  • Upload date:
  • Size: 8.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.11

File hashes

Hashes for tkinter_async_execute-1.4.0.tar.gz
Algorithm Hash digest
SHA256 298fda3f1834e0798e417449d9f5ce27da969b2a90333f58c78f1a7ad3d67bfa
MD5 cbba5ffb79c551f66b8f8a29db0002ac
BLAKE2b-256 aa37daba7b6bc2abc1d5141033fd4c725cd7998ec1beca0df1a384f1d5ac72a5

See more details on using hashes here.

File details

Details for the file tkinter_async_execute-1.4.0-py3-none-any.whl.

File metadata

File hashes

Hashes for tkinter_async_execute-1.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 2ab7b65634c797b3b678746b3e8194f8ca7bead224e8322b7721ee7ef057be17
MD5 6435408581dfdee4556188e6166819d8
BLAKE2b-256 25061217a1756432d69be62f6bc7995e61a022e7352ccdf1190a5b84a16ad412

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page