每隔一段时间更改一个 tkinter 标签文本
Change a tkinter label text every fragment of time
我想在我的 GUI 应用程序上模拟加载,但我不能。我试图通过在时间间隔内更改根底部的标签文本来做到这一点,正如您在我的简单代码中看到的那样。
我希望它像这样工作:
- 标签文字一开始是“请稍候”。
- 0.5秒后,会变成“请稍等。”然后“请稍等..”,
“请稍等...” 然后重复该过程直到到达
特定的等待秒数。
我的代码的问题是我反复使用的睡眠方法(时间模块)会冻结程序直到达到时间限制,这意味着"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.
我想在我的 GUI 应用程序上模拟加载,但我不能。我试图通过在时间间隔内更改根底部的标签文本来做到这一点,正如您在我的简单代码中看到的那样。 我希望它像这样工作:
- 标签文字一开始是“请稍候”。
- 0.5秒后,会变成“请稍等。”然后“请稍等..”, “请稍等...” 然后重复该过程直到到达 特定的等待秒数。
我的代码的问题是我反复使用的睡眠方法(时间模块)会冻结程序直到达到时间限制,这意味着"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.