Python 按设定的时间间隔刷新tkinter标签
我做了一个窗口和列表。我想输出数字,让它们每隔一秒钟消失Python 按设定的时间间隔刷新tkinter标签,python,tkinter,Python,Tkinter,我做了一个窗口和列表。我想输出数字,让它们每隔一秒钟消失 list1={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20} def Display_num(): for i in range(20): display=tkinter.Label(window, text=list1[i],width=25, height=3,fg="black",relief="solid")
list1={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20}
def Display_num():
for i in range(20):
display=tkinter.Label(window, text=list1[i],width=25, height=3,fg="black",relief="solid")
display.pack()
display.after(1000,display.destroy)
但是当我运行这个程序时,标签会同时打印和消失。我如何解决它
import tkinter as tk
def loop(lbl, ls, flash: bool = False):
if ls:
if not flash:
val, *ls = ls
lbl.config(text=val)
lbl.after(1000, loop, lbl, ls, not flash)
else:
lbl.config(text=" ")
lbl.after(250, loop, lbl, ls, not flash)
else:
lbl.config(text="Fin")
root = tk.Tk()
label = tk.Label(root, text="Default")
label.pack()
loop(label, [1, 2, 3, 4, 5, 6, 7, 8, 9])
root.mainloop()
列表不为空时,每秒更新标签。一旦列表为空,则将标签文本设置为fin
编辑
根据注释请求,在数字之间添加了一个简短的“flash”。for循环在几毫秒内运行,因为其中没有特别长的操作。因此,您基本上一次创建所有20个标签,然后大约一秒钟后,所有的
.after()
都会一个接一个地触发。循环无法实现这一点-创建单个标签,它的.after()
将是一个函数(可能是Display_num()
本身),它将创建下一个标签(或者更好的是,只需更改现有标签的文本。谢谢!!对不起,我还有一个问题。如何在数字之间添加空标签??空标签打印时间非常短。数字之间的标签是什么意思@권준하对不起,我的英语很差。当我运行这个程序时,数字会连续更改。如果数字打印成-->'1'出现,然后很短时间消失,然后出现'2',那就太好了……非常感谢你!!因为我是tkinter的新手,所以我花了一个星期的时间与它斗争