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 に答える