倒计时后如何从Tkinter删除标签

时间:2019-04-08 14:32:30

标签: python python-3.x tkinter label

我正在尝试创建一个十秒钟的倒计时,在倒数到零后将其自身删除。如何以及在哪里放置删除标签的代码?

我已经尝试过label.destroy()label.forget(),但是它们不起作用,会产生错误消息。

from tkinter import *

root = Tk()

def countdown(count):
    label['text'] = count
    if count > 0:
        root.after(1000, countdown, count-1)
    elif count == 0:
        label['text'] = 'Time Expired'

label = Label(root, anchor=CENTER, font=('Calibri', 48))
label.place(x=132, y=102)
countdown(10)
label.pack_forget()

我希望程序在完成任务后删除标签。但是,它会递减计数,但不会自行删除。

2 个答案:

答案 0 :(得分:2)

不要在 .container{ display: flex; flex-direction: column; height: 100%; width: 250px; background: black; color: white; overflow: scroll; ul{ list-style: none; margin-left: 0; padding-left: 0; } } a{ display: inline-block; color: white; text-decoration: none; white-space: nowrap; clear:both; padding: 15px; position: relative; width: 100%; &:hover{ background: white; color: black; } } 函数内调用destroypack_forget

countdown

答案 1 :(得分:1)

如果您想看到“时间已过期” 1秒钟,然后隐藏标签,请尝试以下代码:

from tkinter import *

root = Tk()
def countdown(count, label):
    label['text'] = count
    if count > 0:
        root.after(1000, countdown, count-1, label)
    elif count == 0:
        label['text'] = 'Time \nExpired'
        root.after(1000, countdown, count-1, label)
    elif count < 0:
        label.destroy()

label = Label(root, anchor=CENTER, font=('Calibri', 48))
label.place(x=132, y=102)
countdown(10, label)
root.mainloop()

主要问题是您不必等待倒计时功能完成执行周期后再隐藏标签;一种解决方案是将隐藏指令移至倒数功能内并在最后一个周期执行。