我正在尝试用python创建第一个项目,并想创建一个闹钟,要求用户输入小时,分钟,上午或下午以设置闹钟。我在如何设置操作按钮方面遇到问题,以便当用户单击“设置警报”时,将设置警报。
import datetime
import winsound
import tkinter as tk
filename = "old-fashioned-door-bell.wav"
window = tk.Tk()
window.title("Alarm Clock")
window.geometry("400x400")
window.configure(background="Brown")
def alarm_Clock():
alarmHour = int(Entry1.get())
alarmMinute = int(Entry2.get())
amPm = str(Entry3.get())
if (amPm == "pm"):
alarmHour += 12
while (1 == 1):
if (alarmHour == datetime.datetime.now().hour and
alarmMinute == datetime.datetime.now().minute):
winsound.PlaySound(filename, winsound.SND_LOOP)
break
def update_btn():
alarmHour, alarmMinute, amPM = Entry1.get(), Entry2.get(), Entry3.get()
if alarmHour.isdigit() and alarmMinute.isdigit() and amPM.isdigit():
return alarm_Clock()
Prompts1 = tk.Label(text="Kels Alarm Clock", font=("Times New Roman", 40), bg="brown", fg="white")
Prompts1.grid(column=0, row=0)
Prompts2 = tk.Label(text="Please enter the time Alarm should ring!", font=("Times New Roman", 15),
bg="brown", fg="white")
Prompts2.grid(column=0, row=1, sticky="W")
Label1 = tk.Label(text="Enter Hour", bg="brown", fg="white", font="Garamond")
Label1.grid(column=0, row=2, sticky="W")
Label2 = tk.Label(text="Enter Minute", bg="brown", fg="white", font="Garamond")
Label2.grid(column=0, row=3, sticky="W")
Label3 = tk.Label(text="Am or Pm", bg="brown", fg="white", font="Garamond")
Label3.grid(column=0, row=4, sticky="W")
Entry1 = tk.Entry()
Entry1.grid(column=1, row=2)
Entry2 = tk.Entry()
Entry2.grid(column=1, row=3)
Entry3 = tk.Entry()
Entry3.grid(column=1, row=4)
Button1 = tk.Button(text="Set Alarm", command="update_btn")
Button1.grid(column=1, row=5)
window.mainloop()
答案 0 :(得分:0)
这是完整的代码
import datetime
import winsound
import tkinter as tk
filename = "old-fashioned-door-bell.wav"
window = tk.Tk()
window.title("Alarm Clock")
window.geometry("400x400")
window.configure(background="Brown")
def alarm_Clock():
alarmHour = int(Entry1.get())
alarmMinute = int(Entry2.get())
amPm = str(Entry3.get())
if (amPm == "pm"):
alarmHour += 12
while (1 == 1):
if (alarmHour == datetime.datetime.now().hour and
alarmMinute == datetime.datetime.now().minute):
winsound.PlaySound(filename, winsound.SND_LOOP)
break
def update_btn():
alarmHour, alarmMinute, amPM = Entry1.get(), Entry2.get(), Entry3.get()
if alarmHour.isdigit() and alarmMinute.isdigit() and amPM.isdigit():
return alarm_Clock()
Prompts1 = tk.Label(text="Kels Alarm Clock", font=("Times New Roman", 40), bg="brown",
fg="white")
Prompts1.grid(column=0, row=0)
Prompts2 = tk.Label(text="Please enter the time Alarm should ring!", font=("Times New
Roman", 15), bg="brown", fg="white")
Prompts2.grid(column=0, row=1, sticky="W")
Label1 = tk.Label(text="Enter Hour", bg="brown", fg="white", font="Garamond")
Label1.grid(column=0, row=2, sticky="W")
Label2 = tk.Label(text="Enter Minute", bg="brown", fg="white", font="Garamond")
Label2.grid(column=0, row=3, sticky="W")
Label3 = tk.Label(text="Am or Pm", bg="brown", fg="white", font="Garamond")
Label3.grid(column=0, row=4, sticky="W")
Entry1 = tk.Entry()
Entry1.grid(column=1, row=2)
Entry2 = tk.Entry()
Entry2.grid(column=1, row=3)
Entry3 = tk.Entry()
Entry3.grid(column=1, row=4)
Button1 = tk.Button(text="Set Alarm", command="update_btn")
Button1.grid(column=1, row=5)
window.mainloop()
答案 1 :(得分:-1)
首先,您的代码中存在一些错误。 Enter1,Enter2 ...在函数“ update_btn()”中是本地的。要在其他函数中使用它,请将其传递或在函数“ alarm_clk”中使用“ global”关键字。如果可能,将整个代码而不是大块发布在代码部分。