-1

何かをしなければならないことを思い出させるために、特定の時間にWindowsボックスをポップアップさせるPythonプログラムを作成しようとしています。問題は、whileループがpythonをクラッシュさせることですが、whileループなしでpythonに時間をチェックさせる方法はありますか?

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を 1 回だけ呼び出す必要があります。

これは、私がこのようなものに使用した古い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 に答える