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.

Foi útil?

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))

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top