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

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

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

有帮助吗?

解决方案

  

我知道,因为如果我有一个.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点,反之亦然))

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top