我想知道如何显示文本"正在加载中";而最后的文本是按下执行按钮后加载?
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()
谢谢你的回答
在tkinter中使用.after来代替sleep,以避免阻塞主循环。
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()