You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python闹钟项目导入datetime后报hour未定义NameError如何解决?

问题原因

该NameError和datetime模块导入无关,错误触发的核心原因是:代码在actual_time函数中直接调用了hour、min、second三个变量,但这三个变量从未在全局/函数局部作用域中被定义。你虽然导入了tkinter库,但没有创建对应的时间输入控件实例,三个变量不存在,调用自然报错。

另外你的原始代码还存在两处隐性逻辑问题:

  • 使用min作为变量名,和Python内置函数min()重名,容易引发后续不可预知的错误
  • alarm函数中播放音效和跳出循环的逻辑没有放到时间匹配的判断分支下,会导致程序运行1秒后就直接播放音效并退出,完全不会等待闹钟时间点。
解决方案

你需要补全tkinter的界面初始化逻辑,创建时、分、秒对应的输入控件并赋值给对应变量,同时修正逻辑错误,修改后可运行的完整代码如下:

import tkinter
import datetime
import time
import winsound

def alarm(set_alarm_timer):
    while True:
        time.sleep(1)
        current_time = datetime.datetime.now()
        now = current_time.strftime("%H:%M:%S")
        date = current_time.strftime("%d/%m/%y")
        print("The Set Date is: ", date)
        print(now)
        if now == set_alarm_timer:
            print("Time to Wake up")
            winsound.PlaySound("sound.wav", winsound.SND_ASYNC)
            break

def actual_time():
    set_alarm_timer = f"{hour.get()}:{minute.get()}:{second.get()}"
    alarm(set_alarm_timer)

# 补全tkinter界面初始化逻辑
root = tkinter.Tk()
root.title("闹钟")
root.geometry("400x200")

#  创建提示标签
tkinter.Label(root, text="请输入闹钟时间 格式为 时:分:秒", font=("Helvetica",14)).place(x=60,y=20)
tkinter.Label(root, text="时", font=("Helvetica",12)).place(x=80,y=70)
tkinter.Label(root, text="分", font=("Helvetica",12)).place(x=180,y=70)
tkinter.Label(root, text="秒", font=("Helvetica",12)).place(x=280,y=70)

# 创建时间输入框,给三个变量赋值
hour = tkinter.Entry(root, width=5, font=("Helvetica",14))
hour.place(x=50, y=100)
minute = tkinter.Entry(root, width=5, font=("Helvetica",14))
minute.place(x=150, y=100)
second = tkinter.Entry(root, width=5, font=("Helvetica",14))
second.place(x=250, y=100)

# 创建设置闹钟按钮
tkinter.Button(root, text="设置闹钟", command=actual_time, width=10, font=("Helvetica",12)).place(x=150, y=140)

root.mainloop()

运行代码后在输入框中填入对应时间(时填24小时制数值,比如下午2点填14),点击设置闹钟按钮即可正常运行。

内容的提问来源于stack exchange,提问作者EveryDayDev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 14:06:03