In [ ]:
Copied!
import tkinter as tk
import time
import tkinter as tk
import time
Code de Pierre Duclosson
----- Définition des Fonctions -----##¶
In [ ]:
Copied!
def action_depart():
""" fonction qui receptione le clic sur le bouton Départ """
global temps_depart, en_route
if not en_route:
temps_depart = time.time() # note le temps machine dans temps_depart
en_route = True
evolution() # lance l'évolution de l'affichage du chrono
def action_depart():
""" fonction qui receptione le clic sur le bouton Départ """
global temps_depart, en_route
if not en_route:
temps_depart = time.time() # note le temps machine dans temps_depart
en_route = True
evolution() # lance l'évolution de l'affichage du chrono
In [ ]:
Copied!
def evolution():
""" fonction qui se rappelle automatiquement toute les 100ms.
Modifie la valeur de la variable de controle texte_chrono
en fonction du temps écoulé depuis le départ du chronomètre """
# on arrive ici toutes les 100 ms
if not en_route:
return
secondes = int(time.time() - temps_depart) # nb de secondes depuis le départ
affiche_sec = "{:02d}".format(secondes%60)
minutes = secondes//60
affiche_min = "{:02d}".format(minutes%60)
heures = minutes//60
affiche_heure = "{:02d}".format(heures)
affiche_temps = affiche_heure + ":" + affiche_min + ":" + affiche_sec
texte_chrono.set(affiche_temps)
fenetre.after(100, evolution) # provoque le rappel de la fonction après 100ms
def evolution():
""" fonction qui se rappelle automatiquement toute les 100ms.
Modifie la valeur de la variable de controle texte_chrono
en fonction du temps écoulé depuis le départ du chronomètre """
# on arrive ici toutes les 100 ms
if not en_route:
return
secondes = int(time.time() - temps_depart) # nb de secondes depuis le départ
affiche_sec = "{:02d}".format(secondes%60)
minutes = secondes//60
affiche_min = "{:02d}".format(minutes%60)
heures = minutes//60
affiche_heure = "{:02d}".format(heures)
affiche_temps = affiche_heure + ":" + affiche_min + ":" + affiche_sec
texte_chrono.set(affiche_temps)
fenetre.after(100, evolution) # provoque le rappel de la fonction après 100ms
In [ ]:
Copied!
def action_arret():
""" fonction qui receptione le clic sur le bouton Arrêt """
global en_route
en_route = False
def action_arret():
""" fonction qui receptione le clic sur le bouton Arrêt """
global en_route
en_route = False
Création de la fenêtre principale
In [ ]:
Copied!
fenetre = tk.Tk()
fenetre.title("Chronomètre NSI")
fenetre.geometry("400x200")
fenetre = tk.Tk()
fenetre.title("Chronomètre NSI")
fenetre.geometry("400x200")
------- Variables globales et variables de contrôle -------¶
In [ ]:
Copied!
en_route = False # booléen qui indique si le chronomètre est en route
texte_chrono = tk.StringVar() # Variable de contrôle pour le texte affiché
texte_chrono.set('00:00:00') # Initialise la valeur de texte_chrono
en_route = False # booléen qui indique si le chronomètre est en route
texte_chrono = tk.StringVar() # Variable de contrôle pour le texte affiché
texte_chrono.set('00:00:00') # Initialise la valeur de texte_chrono
------- Affichage -------##¶
In [ ]:
Copied!
etiquette1 = tk.Label(fenetre, textvariable = texte_chrono, font=("times", 60))
etiquette1.pack()
etiquette1 = tk.Label(fenetre, textvariable = texte_chrono, font=("times", 60))
etiquette1.pack()
----- Boutons -----##¶
In [ ]:
Copied!
cadre_boutons = tk.Frame(fenetre) # cadre pour les boutons Départ et Arrêt
cadre_boutons.pack()
bouton_depart = tk.Button(cadre_boutons, text = " Départ ",
command = action_depart,
font=("sans-serif", 30))
bouton_arret= tk.Button(cadre_boutons, text = " Arrêt ",
command = action_arret,
font=("sans-serif", 30))
bouton_depart.pack(side = 'left' )
bouton_arret.pack()
cadre_boutons = tk.Frame(fenetre) # cadre pour les boutons Départ et Arrêt
cadre_boutons.pack()
bouton_depart = tk.Button(cadre_boutons, text = " Départ ",
command = action_depart,
font=("sans-serif", 30))
bouton_arret= tk.Button(cadre_boutons, text = " Arrêt ",
command = action_arret,
font=("sans-serif", 30))
bouton_depart.pack(side = 'left' )
bouton_arret.pack()
----- Programme principal -----##¶
In [ ]:
Copied!
fenetre.mainloop()
fenetre.mainloop()