[使用tkinter创建闹钟时如何设置操作按钮

问题描述 投票:0回答:1

我正在尝试使用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()
python tkinter alarmmanager
1个回答
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
投票

首先,您的代码中存在一些错误。 Enter1,Enter2 ...在函数“ update_btn()”中是本地的。要在其他函数中使用它,请将其传递或在函数“ alarm_clk”中使用“ global”关键字。如果可能,将整个代码而不是大块发布在代码部分。

© www.soinside.com 2019 - 2024. All rights reserved.