1

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

我知道我可以不时检查 .after 事件;我在问我是否可以在系统日期/时间更改时以某种方式触发事件,无论是自动(例如夏令时)还是手动。

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

4

1 回答 1

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 点,反之亦然))

于 2008-10-01T22:21:02.930 回答