Я пытаюсь создать таймер обратного отсчета, который автоматически сбрасывается при достижении нуля, а затем снова начинает обратный отсчет. Я основал этот код от другого пользователя с очень небольшими изменениями, но я что-то упустил.
from tkinter import *
from tkinter import ttk
from tkinter import font
import time
import datetime
global endTime
global taktTime
def quit(*args):
root.destroy()
def show_time():
# Get the time remaining until the event
remainder = endTime - datetime.datetime.now()
# remove the microseconds part
remainder = remainder - datetime.timedelta(microseconds=remainder.microseconds)
if remainder.days >= 0:
# Show the time left
txt.set(remainder)
# Trigger the countdown after 1000ms
root.after(1000, show_time)
else:
txt.set('complete')
endTime = datetime.datetime.now() + taktTime
# Use tkinter lib for showing the clock
root = Tk()
root.attributes("-fullscreen", True)
root.configure(background='black')
root.bind("x", quit)
root.after(1000, show_time)
taktTime = datetime.timedelta(seconds=10)
# Set the end date and time for the countdown
endTime = datetime.datetime.now() + taktTime
fnt = font.Font(family='Helvetica', size=250, weight='bold')
txt = StringVar()
lbl = ttk.Label(root, textvariable=txt, font=fnt, foreground="white", background="black")
lbl.place(relx=0.5, rely=0.5, anchor=CENTER)
root.mainloop()
Я пытался сбросить endTime, когда остаток достигает нуля, но я получаю сообщение об ошибке "UnboundLocalError: локальная переменная 'endTime', на которую ссылается перед присваиванием"
Я уверен, что это простая ошибка новичка, поэтому заранее благодарю за помощь.