Reputation: 23
I would like to know how to display the text "loading in progress" while the final text is loading after pressing the execute button?
import time
import random
import tkinter as tk
def load():
my_label.config(text="Loading in progress...") #how to display it?
my_time = random.randint(1,10)
time.sleep(my_time)
my_label.config(text="Loaded!!!")
root = tk.Tk()
root.geometry('300x300')
my_button = tk.Button(root, text='Load', width=20, command=load)
my_button.pack(pady=20)
my_label = tk.Label(root, text='')
my_label.pack(pady=20)
root.mainloop()
Thank you for your answers
Upvotes: 0
Views: 195
Reputation: 1723
Use .after instead of sleep in tkinter to avoid blocking the main loop.
import time
import random
import tkinter as tk
from functools import partial
my_time = None
def load(my_time):
if my_time is None:
my_time = random.randint(2, 10)
my_label.config(text=f"Loading in progress...{my_time}")
my_time -=1
timer = root.after(1000, load, my_time)
if not my_time:
root.after_cancel(timer)
my_label.config(text="Loaded!!!")
root = tk.Tk()
root.geometry('300x300')
my_button = tk.Button(root, text='Load', width=20, command=partial(load, my_time))
my_button.pack(pady=20)
my_label = tk.Label(root, text='')
my_label.pack(pady=20)
root.mainloop()
Upvotes: 1