97 votes

Coder un timer dans une interface graphique python en Tkinter

Je dois coder un programme avec une interface graphique en python (je pense utiliser Tkinter, parce que c'est facile, mais je suis ouvert aux suggestions).

Mon problème majeur est que je ne sais pas comment coder un timer (comme une horloge... comme 00:00:00,00 hh:mm:ss,00 ) J'ai besoin qu'il se mette à jour tout seul (c'est ce que je ne sais pas faire).

146voto

Bryan Oakley Points 63365

Les fenêtres racines de Tkinter ont une méthode appelée after qui peut être utilisé pour planifier l'appel d'une fonction après une période de temps donnée. Si cette fonction appelle elle-même after vous avez mis en place un événement récurrent automatique.

Voici un exemple concret :

# for python 3.x use 'tkinter' rather than 'Tkinter'
import Tkinter as tk
import time

class App():
    def __init__(self):
        self.root = tk.Tk()
        self.label = tk.Label(text="")
        self.label.pack()
        self.update_clock()
        self.root.mainloop()

    def update_clock(self):
        now = time.strftime("%H:%M:%S")
        self.label.configure(text=now)
        self.root.after(1000, self.update_clock)

app=App()

N'oubliez pas que after ne garantit pas que la fonction sera exécutée exactement à l'heure. Elle ne fait que horaires le travail à exécuter après un temps donné. Si l'application est occupée, il peut y avoir un délai avant qu'elle ne soit appelée puisque Tkinter est monofilaire. Ce délai est généralement mesuré en microsecondes.

4voto

codeape Points 38576

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X