函数继承是否可能像python中的类继承一样?

时间:2019-11-15 13:09:29

标签: python python-3.x tkinter pygame

from tkinter import *
from tkinter import messagebox
import pygame
import time
pygame.init()
def alarm_time():
    hrs = int(hrs_opt_ctrl.get())
    min = int(min_opt_ctrl.get())
    tme = tme_ctrl.get()
    if hrs == int(time.strftime('%I')) and min == int(time.strftime('%M')) and tme == time.strftime('%p'):
        # Time is up. Play the sound
        alarm_ringtone = pygame.mixer.music.load('alarm_noise.mp3')
        pygame.mixer.music.play()
        # Don't call after again
    else:
        # Not time, sleep for 1 second
        window.after(1000, alarm_time)

def snooze_time():
    snoz_min=(2,5,10,20,30,35,40,45,50,55,59)
    snooze=True
    while snooze:
        try:
            min = min + int(snoz_min[minute])
            window.after((min)*1000,alarm_time)
        except:
            messagebox.showerror("Error 404", "Cannot Snooze for given Time")
        if minute<=len(snoz_min):
            minute+=1
        elif minute!=len(snoz_min):
            minute=0
        else:
            pass
    snooze=False

window=Tk()
window.title('Alarm')
window.config(background='black')
logo=PhotoImage(file='alarm.gif')
lab_1=Label(window,text='Alarm',bg='black',fg='white',font=('Times',25,'bold')).grid(column=100,row=0)
lab_2=Label(window,bg='black',image=logo).grid(column=300,row=0)
lab_3=Label(window,text='Hours',bg='black',fg='white',font=('Comic',10,'bold')).grid(column=50,row=130)
lab_4=Label(window,text='Minutes',bg='black',fg='white',font=('Comic',10,'bold')).grid(column=85,row=130)
opt_hrs=[]
opt_min=[]
opt_tme=('AM','PM')
minute=0
for i in range(1,13):
    opt_hrs.append(i)
for j in range(0,60):
    opt_min.append(j)
hrs_opt_ctrl=StringVar()
min_opt_ctrl=StringVar()
tme_ctrl=StringVar()
tme_ctrl.set(opt_tme[0])
hrs_lab=OptionMenu(window,hrs_opt_ctrl,*opt_hrs).grid(column=60,row=130,columnspan=15)
min_lab=OptionMenu(window,min_opt_ctrl,*opt_min).grid(column=86,row=130,columnspan=15)
tme_lab=OptionMenu(window,tme_ctrl,*opt_tme).grid(column=150,row=130)
but_1=Button(window,text='Set Alarm',font=('Comic',10,'bold'),command=alarm_time).grid(column=100,row=240)
but_2=Button(window,text='Snooze',font=('Comic',10,'bold'),command=snooze_time).grid(column=100,row=250)
window.mainloop()

以下代码在运行时不会显示任何错误,但不会发出警报。 警报文件的扩展名为.mp3,与项目位于同一文件夹中。 我可能认为时间模块代码有问题 或“设置警报”按钮未输入任何内容。列和行的位置不准确

1 个答案:

答案 0 :(得分:2)

如评论中所述,您将其设置为仅当用户在设置警报时单击按钮时才播放警报。相反,您应该每秒检查一次时间,并在给定时间播放闹钟:

def alarm_time():
    hrs = int(hrs_opt_ctrl.get())
    min = int(min_opt_ctrl.get())
    tme = tme_ctrl.get()
    if hrs == int(time.strftime('%I')) and min == int(time.strftime('%M')) and tme == time.strftime('%p'):
        # Time is up. Play the sound
        alarm_ringtone = pygame.mixer.music.load('alarm_noise.mp3')
        pygame.mixer.music.play()
        # Don't call after again
    else:
        # Not time, sleep for 1 second
        window.after(1000, alarm_time)

请注意,我将所有内容都转换为int,因为time.strftime('%I')time.strftime('%M')返回0预先填充的字符串,并且您的选项框没有0预先填充的值,因此{{ 1}}等。


更新的答案带有多个警报和贪睡功能。我只是把这些放在一起,所以有很大的改进空间:

"1" != "01"
相关问题