在倒计时结束的时候,我不能从这个代码中去掉一个标签,这个想法是为一个事件设置一个时钟和一个倒计时计时器,而在计数器的末尾,我希望它消失。
from tkinter import *
import time
win = Tk()
win.geometry('400x400')
frame=Frame(win)
frame.grid()
labelTD=Label(frame)
labelTD.grid(row=2,column=0)
def clock():
t=time.strftime('%A''\n''%D''\n''%I:%M:%S',time.localtime())
if t!='':
labelTD.config(text=t,font='infra 50 bold',foreground='black',background='white')
labelTD.update_idletasks()
labelTD.after(1000,clock)
def countdown():
for t in range(12,-1,-1):
Mn = t % 60
Hr = t // 60
if int(Hr)<10 and int(Mn)<10:
xmn = str(Mn).zfill(2)
xhr = str(Hr).zfill(2)
label1 = Label(frame, text=(xhr+':'+xmn))
label1.grid(row=1)
else:
label1 = Label(frame, text=(str(Hr).zfill(2)+':'+str(Mn)))
label1.grid(row=1)
frame.update()
time.sleep(1)
labelTD.grid(row=2,column=0)
clock()
countdown()
win.mainloop()发布于 2020-12-02 10:38:39
您也应该使用after()作为倒计时,并在函数之外创建倒计时标签:
labelCD = Label(frame)
labelCD.grid()
def countdown(n):
hr, mn = divmod(n, 60)
labelCD.config(text=f"{hr:02}:{mn:02}")
if n > 0:
labelCD.after(1000, countdown, n-1)
else:
labelCD.destroy()
countdown(12)更新:在hh:mm:ss中显示countdown()
def countdown(n):
mn, secs = divmod(n, 60)
hr, mn = divmod(mn, 60)
labelCD.config(text=f"{hr:02}:{mn:02}:{secs:02}")
if n > 0:
labelCD.after(1000, countdown, n-1)
else:
labelCD.destroy()https://stackoverflow.com/questions/65106224
复制相似问题