每隔一段时间更改一个 tkinter 标签文本

Change a tkinter label text every fragment of time

我想在我的 GUI 应用程序上模拟加载,但我不能。我试图通过在时间间隔内更改根底部的标签文本来做到这一点,正如您在我的简单代码中看到的那样。 我希望它像这样工作:

我的代码的问题是我反复使用的睡眠方法(时间模块)会冻结程序直到达到时间限制,这意味着"window.mainloop"直到循环结束才会执行。并且它只会显示最后访问的标签文本值。 这是我的代码:

#

from tkinter import *
import time

window=Tk()

#windowinfo
window.geometry("1080x720")
window.title("")
window.config(bg="#00FFFF")
lrd=PhotoImage(file="C:/Users/hp/OneDrive/Desktop/hhh.png")
ver=Label(window,image=lrd,bd=10,relief=RIDGE)
ver.pack(expand=YES)
wait=Label(window,text="Please wait")
wait.pack(side=BOTTOM)
t=0
while t<4:
    wait.config(text="Please wait.")
    time.sleep(0.5)
    t+=1
    wait.config(text="Please wait..")
    time.sleep(0.5)
    t+=1
    wait.config(text="Please wait...")
    time.sleep(0.5)
    t+=1
#F8D210
#window display
window.mainloop()

试试这个:

import tkinter as tk

window = tk.Tk()
window.geometry("200x200")

wait = tk.Label(window, text="Please wait")
wait.pack()

def loop(t=0):
    if t < 12:
        # Change the Label's text
        wait.config(text="Please wait" + "." * (t % 3 + 1))
        # Schedule a call to `loop` in 500 milliseconds with t+1 as a parameter
        window.after(500, loop, t+1)

# Start the loop
loop()

window.mainloop()

它使用 .after 循环。它每 500 毫秒调用一次 loop,同时递增 t

t % 3在0、1、2之间反复循环。我刚刚给所有这些加了一个:1, 2, 3, 1, 2, 3, 1, 2, 3.