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的新手,所以我花了一个星期的时间与它斗争