有谁知道是否可以(如果可以,如何)将事件(MS Windows 上的 Python + Tkinter)绑定(bind)到系统日期更改?
我知道我可以偶尔检查一下 .after events ;我问是否可以在系统日期/时间更改时自动(例如夏令时)或手动触发事件。
MS Windows 将此类事件发送给应用程序,Tkinter 确实会接收它们;我知道,因为如果我有一个 .after 计时器在等待,并且我在计时器到期后设置了日期/时间,则计时器事件会立即触发。
最佳答案
I know, because if I have an .after timer waiting and I set the date/time after the timer's expiration, the timer event fires instantly.
这可能意味着 Tkinter(或 Tk)正在轮询系统时钟作为事件循环的一部分,以确定何时运行计时器。
如果您使用的是 Windows,Mark Hammond 的书指出,您可以使用 win32evtlogutil 模块来响应 Windows 事件日志中的更改。基本上它的工作原理是这样的:
import win32evtlogutil
def onEvent(record):
# Do something with the event log record
win32evtlogutil.FeedEventLogRecords(onEvent)
但是您需要获取有关事件记录结构的文档(我不想输入整个章节,抱歉:-))。另外,我也不知道事件日志中是否会出现日期更改。
真的,只是轮询系统时钟有那么糟糕吗?这看起来最简单,而且我认为它不会让你慢下来太多。
(最后,评论:我不了解您所在的国家/地区,但在新西兰,夏令时不涉及日期更改;仅涉及时间更改(从凌晨 2 点到凌晨 3 点,反之亦然))
关于python - Tkinter 应用程序中的日期更改通知 (win32),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/157116/