尝试使用 Python Tkinter 创建一个 3 分钟倒数计时器。3 分钟后,窗口应关闭。发生错误,我不知道为什么。当窗口启动时,只有绿色背景上的蓝色条纹。
这是代码:
from tkinter import *
from datetime import datetime
from time import strptime, time
from tkinter import *
from datetime import datetime
from datetime import timedelta
root = Tk()
root.title('QuizopTimer')
root.geometry('1000x800')
root['bg'] = 'limegreen'
def update_time():
format = '%H:%M:%S'
s2 = (datetime.now() + timedelta(minutes=3)).strftime(format)
now = (datetime.now()).strftime(format)
s3 = datetime.strptime(s2, format) - datetime.strptime(now, format)
timerlbl.config(text=s3)
if not s3 == '00:00:00':
now2 = (datetime.now()).strftime(format)
s4 = datetime.strptime(s2, format) - datetime.strptime(now2, format)
timerlbl.config(text=s4)
else:
root.destroy()
timerlbl.after(1000, update_time)
timerlbl = Label(root, font=('calibri', 50, 'bold'), background='blue', foreground='white')
timerlbl.pack(anchor=CENTER)
root.mainloop()
update_time()
错误:
Возникло исключение: TclError
invalid command name ".!label"
File "C:\Games\quizopfortrn\timertest.py", line 18, in update_time
timerlbl.config(text=s3)
File "C:\Games\quizopfortrn\timertest.py", line 31, in <module>
update_time()
第一次调用
update_time必须在调用之前root.mainloop(),因为 它后面的任何东西都只会在程序终止时执行。第二点是经过时间的测量 -
update_time每次调用等于 3 分钟,因为它是在函数内部计算的:完成的计算必须在计时器第一次启动之前完成一次。