Python 我正在尝试制作一个类似闹钟的功能应用程序,但它一直在等待

Python 我正在尝试制作一个类似闹钟的功能应用程序,但它一直在等待,python,arrays,Python,Arrays,我正在尝试制作一个类似于闹钟的应用程序,在这个应用程序中,我希望在适当的时候列出发生的事情。但我面临一个错误。时间一直在等待上一次,而不是列表中的下一次 t1 = dt.time(hour=17,minute=8) t2 = dt.time(hour=18,minute=48) timetable = [t1, t2] for elt in timetable: i_time = elt #i_minute = i.minute while Tr

我正在尝试制作一个类似于闹钟的应用程序,在这个应用程序中,我希望在适当的时候列出发生的事情。但我面临一个错误。时间一直在等待上一次,而不是列表中的下一次

t1 = dt.time(hour=17,minute=8)
t2 = dt.time(hour=18,minute=48)
timetable = [t1, t2]

for elt in timetable:
        i_time = elt
        #i_minute = i.minute
        while True:
            if i_time == dt.datetime.now().time():
            #if i_hour == dt.datetime.now().hour and i_minute == dt.datetime.now().minute:
                #current_time = tk.Label(text = dt.datetime.now())
                #current_time.pack()
                #playsound('media/ClassAlarm.mp3')
                print("Its time")
                break
该功能在t1时工作正常,但如果t1通过且当前时间高于t1,则应转到t2并发出警报。但它一直在等待第二天发生的t1。除非处理t1,否则它不会读取t2

例如,当前时间为1:30,t1为1:25,t2为1:35。它不会在t2响,但会一直等待t1再次发生,而这已经发生了

我尝试以不同的方式执行for循环

for elt in timetable:
  time = dt.datetime.now().time()
  if time - elt < 0:
    break
  while(True):    
    if time == elt:
      print("you did it")
我以前试过把问题贴出来,但无法正确解释。希望这有助于

使用==运算符比较时间是有风险的,从逻辑上讲它应该是可行的,但无论如何使用更好注意:我相信这些函数生成的时间戳格式不同,虽然它们代表时间并且很有用,但是因为它们的格式不同,所以不能使用相等运算符(Bcz即使对于相同的时间和日期,您的时间戳也会不同,尽管它们表示相同)。要确认此行为,您可以编写t1datetime的打印变量。现在并查看它们是否相同

关于第二个问题,您可以使用if/else语句来检查发生了什么时间以及最近发生了什么时间,或者您可以反向运行循环并检查计时器(假设延迟计时器在循环的末尾)

示例代码: 英语教学时间表中的
。反向()
i_time=elt
尽管如此:

如果我在while True之后计算下一行的时间:你能将比较运算符从==更改为>=并告诉我这是否有帮助吗?它没有帮助。它在不检查时间的情况下打印“它的时间”。哦,我很糟糕,很抱歉将符号更改为我无法特别发现你代码中的任何问题。谢谢你的选项帮助很大。比较运算符有帮助。它只是打印而已g上一个报警,它不应该,只打印下一个报警
current_hour = dt.datetime.now().hour
current_min = dt.datetime.now().minute
alarm = any(i.hour == current_hour and i.minute == current_min for i in timetable)

print(alarm)
for elt in timetable.reverse():
    i_time = elt
    while True: 
        if i_time <= dt.datetime.now().time():
            print("Its time")
            break