0

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

1 Answer 1

1

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()
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.