python - 为什么我的 tkinter 倒数计时器在达到零时不会自动重新开始?
问题描述
我正在尝试创建一个倒数计时器,它会在达到零时自动重置,然后再次开始倒计时。我已经将此代码基于另一个用户进行了非常轻微的修改,但我遗漏了一些东西。
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'”
我确定这是一个简单的初学者错误,所以提前感谢您的帮助。
解决方案
推荐阅读
- node.js - 使用 Javascript 编写一个连接 OracleDB 并在 Docker 上运行的 azure 函数
- database - 基于另一列的 Laravel 迁移可为空
- javascript - 在js脚本的href中添加wordpress url
- jmeter - 如何在 JMeter、Loadrunner 等性能测试工具中处理基于 TOTP 的身份验证?
- c# - c#:从对象转换为xml时布尔值未转换
- java - 无法实例化提供程序 org.geotools.referencing.factory.epsg.CartesianAuthorityFactory
- ruby - IMAP IDLE 和并行邮件处理
- nginx - Nginx 错误日志 - 未初始化的“日志记录”变量
- drools - Drools:如何删除动态创建的 drl?
- google-chrome - Chrome 显示错误的时区