首页 > 解决方案 > 每隔一段时间更改一个 tkinter 标签文本

问题描述

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

我的代码的问题是我反复使用的sleep方法(时间模块)会冻结程序直到达到时间限制,这意味着“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()

标签: pythonpython-3.xuser-interfacetkintertkinter-text

解决方案


试试这个:

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循环。loop它每 500 毫秒调用一次,同时递增t.

t % 30、1、2之间的循环重复。我只是在所有这些中添加了一个:1、2、3、1、2、3、1、2、3。


推荐阅读