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

标签 python windows events tkinter

有谁知道是否可以(如果可以,如何)将事件(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/

相关文章:

asp.net - 监听事件: in HTML from . NET

java - 从 JFrame 创建 JFrame 时出错

java - 在JavaFX的FXML中,如何声明自定义事件的处理程序?

python - 如何使用本身就是外键的字段获取 Django 模型的对象列表?

python - python的fractions.limit_denominator是怎么实现的?

百分位数方法的 Python numpy 升级失败测试

c++ - 在 NT 之前的系统上调用 NT 函数

c++ - Winsock 错误代码 10014

java - 如何在Windows上创建程序数据的本地文件夹(在%APPDATA%中,无需授予权限,JAVA)

python - 如何在 PyGObject 中获取按钮文本?