我正在尝试创建一个十秒钟的倒计时,在倒数到零后将其自身删除。如何以及在哪里放置删除标签的代码?
我已经尝试过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()
我希望程序在完成任务后删除标签。但是,它会递减计数,但不会自行删除。
答案 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;
}
}
函数内调用destroy
或pack_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()
主要问题是您不必等待倒计时功能完成执行周期后再隐藏标签;一种解决方案是将隐藏指令移至倒数功能内并在最后一个周期执行。