0

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

  • 标签文本一开始是“请稍候”
  • 0.5s 后,将变为“请稍候”。然后“请稍候..”“请稍候...”,然后重复该过程,直到达到特定的等待秒数。

我的代码的问题是我反复使用的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()
4

1 回答 1

1

试试这个:

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。

于 2021-09-05T22:41:02.610 回答