我正在使用appjar
创建一个python应用程序,该应用程序包含一项功能,该功能可将警报设置为在特定时间/日期发出警报。但是,基于我的简单实现,在代码中调用Alarm函数时,应用程序将无限期地等待警报响起,然后再进行其他操作。
我希望能够在应用程序中浏览而不必等待警报。最好的方法是什么?
这是我的警报代码:
def setAlarm(year, month, day, hour, minute, second):
now = datetime.datetime.now()
date = datetime.date(year, month, day)
time = datetime.time(hour, minute, second)
alarmTime = datetime.datetime(year, month, day, hour, minute, second)
while now < alarmTime:
print("not yet")
mixer.music.load('Alarm.wav')
mixer.music.play(-1)
sound = True
while(sound):
print("Alarm")
答案 0 :(得分:0)
签出Python Timers。如果这不起作用,则您的解决方案将涉及某种多线程或多处理,以便您可以同时运行两个执行路径。
您应该可以在短时间内设置一个计时器。当计时器关闭时,请在检查您等待的条件时让其运行的代码。如果仍然不满足该条件,请让该代码触发新的计时器以等待更多时间。创建并启动计时器时,控件会立即返回您的代码,因此您可以继续执行其他操作。
答案 1 :(得分:0)
我遇到了同样的问题,然后以自己的方式解决了。
import time
from playsound import playsound
import threading
from datetime import datetime
import playsound
#taking input from user
alarmH = 3
alarmM = 10
amPm = 'am'
print("Weating for the alarm",alarmH,alarmM,amPm)
if (amPm == "pm"):
alarmH = alarmH + 12
#Current Date Time
now = datetime.now()
#desired alarm time
later = datetime(2020,5,1,alarmH,alarmM,0)
#calculating the difference between two time
difference = (later - now)
#difference in seconds
total_sec=difference.total_seconds()
def alarm_func():
playsound.playsound('audio/alarm.mp3', True)
timer = threading.Timer(total_sec, alarm_func)
timer.start()