2008-10-01 48 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

相关问题