python - 每隔一段时间更改一个 tkinter 标签文本
问题描述
我想在我的 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()
解决方案
试试这个:
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 % 3
0、1、2之间的循环重复。我只是在所有这些中添加了一个:1、2、3、1、2、3、1、2、3。
推荐阅读
- reactjs - 如何在组合反应钩子中调用函数?
- java - 如何使用独特的查找表进行连接
- bash - 如何仅grep输出的第一个单词
- javascript - 未捕获的 ReferenceError:未定义自动计算
- java - 如何在 Java 的命令行中创建用户选择菜单?
- python - 数据砖社区版无法读取上传的表(之前工作)
- woocommerce - 如何通过删除“wc_”前缀来操作 WooCommerce 订单键?
- html - 媒体查询没有以不同的大小响应
- javascript - 网站构建器解析脚本时如何将javascript插入html页面
- arrays - Ruby - 更新散列数组的一个散列中的键/值会更新所有散列