Open
Description
In the following code (pure tkinter) counter continues to work while messagebox dialog is shown:
import tkinter as tk
from tkinter import messagebox
root = tk.Tk()
def loop():
counter.set(counter.get() + 1)
root.after(1000, loop)
def show_message():
messagebox.showinfo("Info", "Some info")
counter = tk.IntVar()
tk.Label(root, textvariable=counter).pack()
tk.Button(root, text="Start counter", command=loop).pack()
tk.Button(root, text="Show message", command=show_message).pack()
root.mainloop()
But with the corresponding code with async_tkinter_loop
counter is paused when messagebox is shown:
import asyncio
import tkinter as tk
from tkinter import messagebox
from async_tkinter_loop import async_mainloop, async_handler
root = tk.Tk()
@async_handler
async def loop():
while True:
counter.set(counter.get() + 1)
await asyncio.sleep(1.0)
def show_message():
messagebox.showinfo("Info", "Some info")
counter = tk.IntVar()
tk.Label(root, textvariable=counter).pack()
tk.Button(root, text="Start counter", command=loop).pack()
tk.Button(root, text="Show message", command=show_message).pack()
async_mainloop(root)