Tkinter应用程序中的日期更改通知(win32)

时间:2008-10-01 11:02:44

标签: python windows events tkinter

是否有人知道将事件(MS Windows上的Python + Tkinter)绑定到系统日期更改是否可能(如果是,如何)?

我知道我可以暂时检查一下事件。我问,无论何时系统日期/时间发生变化,我都可以自动(例如夏令时)或手动更新事件。

MS Windows将此类事件发送给应用程序,而Tkinter会接收它们;我知道,因为如果我有一个.after计时器等待并且我在计时器到期后设置了日期/时间,那么计时器事件会立即触发。

1 个答案:

答案 0 :(得分: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点,反之亦然))< / p>