2008-10-01 45 views
0

有誰知道是否有可能(如果是,如何)將事件(MS Windows上的Python + Tkinter)綁定到系統日期更改?Tkinter應用程序中的日期更改通知(win32)

我知道我可以有。事後檢查一次;我詢問是否可以在系統日期/時間變化時自動(例如夏令時)或手動更改事件。

MS Windows將這些事件發送給應用程序,Tkinter確實收到它們;我知道,因爲如果我有一個.after計時器等待,並且在計時器到期後設置日期/時間,則計時器事件會立即觸發。

回答

1

我知道,因爲如果我有一個.after計時器等待,並且我設置了計時器到期後的日期/時間,計時器事件立即觸發。

這可能意味着Tkinter(或Tk)將輪詢系統時鐘作爲事件循環的一部分,以確定何時運行定時器。

如果您使用Windows,Mark Hammond的書中指出,您可以使用win32evtlogutil模塊來響應Windows事件日誌中的更改。基本上,它的工作原理是這樣的:

import win32evtlogutil 
def onEvent(record): 
    # Do something with the event log record 
win32evtlogutil.FeedEventLogRecords(onEvent) 

但是,你需要獲得的事件記錄結構文檔(我不喜歡打字了全篇,對不起:-))。另外我不知道日期變化是否會在事件日誌中出現。

真的,只是輪詢系統時鐘是非常糟糕的嗎?這似乎是最簡單的,我不認爲這會讓你減慢很多。

(最後,評論:我不知道你的國家,但在新西蘭,夏令時並不涉及日期變更;只有時間變化(從上午2點到上午3點,反之亦然))

+0

這裏也只有DST /非DST的時間變化;我喜歡更改系統時鐘,無論是時間調整還是日期更改。我會檢查我的問題措辭是否不夠清楚。感謝您的回答。 – tzot 2008-10-02 07:44:03

相關問題