-1

我正在尝试制作一个 python 程序,它会在某些时候弹出一个窗口框以提醒我必须做点什么。问题是,while循环使python崩溃,有没有办法让python在没有while循环的情况下检查时间?

while 1:
    gettime = time.strftime("%H:%M", time.localtime())
    gettime.replace(':','.')

    if gettime in tasks.keys():
        tasks[gettime] = dowat
        ctypes.windll.user32.MessageBoxW(0,u'ALERT!', dowat, 0)
        time.sleep(10)
        SendKeys.SendKeys("""
                {LWIN}
                l
                """)

我尝试在循环结束时让 python 睡眠,但它仍然冻结。

4

1 回答 1

1

你以错误的方式去做......你不需要一个while循环。您需要做的是获取当前时间并计算出时差。然后你只需要调用 time.sleep一次

这是我用来做类似事情的一些旧 python 代码。它周围有我必须清理/删除的东西,所以它可能无法 100% 工作。

import time
import datetime

CurrentTime = datetime.datetime.now()

exec_time = "18:00"

val = datetime.datetime.strptime(exec_time, "%H:%M")
val = datetime.datetime(year=CurrentTime.year, month=CurrentTime.month, day=CurrentTime.day, hour=val.hour, minute=val.minute)

if (val > CurrentTime):
    print "val = ", val
    val = datetime.datetime(year=CurrentTime.year, month=CurrentTime.month, day=CurrentTime.day, hour=val.hour, minute=val.minute) - CurrentTime #Calculate dif.

    time.sleep(val.seconds) #Sleep to next event
于 2012-08-26T19:36:06.060 回答