notificação de alteração de data em um aplicativo Tkinter (win32)
Pergunta
Alguém sabe se é possível (e se sim, como) para ligar um evento (Python + Tkinter no MS Windows) para a mudança de data do sistema?
Eu sei que pode ter eventos .Após a inspecção de vez em quando; Estou perguntando se eu posso de alguma forma ter um evento disparado sempre que a data do sistema / hora alterações, quer automaticamente (por exemplo, para o horário de verão) ou manualmente.
MS Windows envia esses eventos para aplicações e Tkinter faz recebê-los; Eu sei, porque se eu tiver uma espera .depois temporizador e eu definir a data / hora após a expiração do temporizador, o evento é acionado temporizador instantaneamente.
Solução
Eu sei, porque se eu tiver uma espera .depois temporizador e eu definir a data / hora após a expiração do temporizador, o evento é acionado temporizador instantaneamente.
Isso só poderia significar que Tkinter (ou Tk) é polling o relógio do sistema como parte do ciclo de eventos para descobrir quando a correr temporizadores.
Se você estiver usando o Windows, notas do livro de Mark Hammond que você pode usar o módulo win32evtlogutil para responder às mudanças no log de eventos do Windows. Basicamente, funciona assim:
import win32evtlogutil
def onEvent(record):
# Do something with the event log record
win32evtlogutil.FeedEventLogRecords(onEvent)
Mas você vai precisar para obter documentos sobre a estrutura dos registros de eventos (não me sinto como digitando o capítulo inteiro, desculpe :-)). Também não sei se as mudanças de data aparecer no log de eventos de qualquer maneira.
Na verdade, porém, é tão ruim para apenas consultar o relógio do sistema? Parece mais fácil e eu não acho que seria atrasá-lo muito.
(finalmente, um comentário: Eu não sei sobre o seu país, mas aqui na Nova Zelândia, o horário de verão não envolve uma mudança de data, apenas as mudanças de tempo (de duas horas - três horas, ou vice-versa))