Visualiser un compte à rebours dans une fenêtre graphique en utilisant Tkinter

Résolu/Fermé
Frank_9982 Messages postés 3 Date d'inscription jeudi 26 août 2021 Statut Membre Dernière intervention 27 août 2021 - 26 août 2021 à 17:54
Frank_9982 Messages postés 3 Date d'inscription jeudi 26 août 2021 Statut Membre Dernière intervention 27 août 2021 - 27 août 2021 à 22:27
Bonjour,

S'il vous plaît je souhaite présenter le code que j'ai développé afin que quelqu'un puisse me montrer l'erreur qu'il y a et obtenir une solution. Le résultat rendu après exécution du programme ne correspond pas à un compte à rebours. La classe conçue consiste à:

1- Créer la fenêtre graphique principale où se visualisera le compte à rebours
2- Insérer un widget dans lequel il y a un paramètre servant à mémoriser le temps à afficher et mettre à jour
3- Récupérer et sauvegarder dans une variable un entier naturel saisi du clavier
4- Convertir la valeur saisie en un format des heures

A voir également:

3 réponses

Bonsoir,

Sur les forums de programmation on expose le code textuellement et non en image.

Si c'est vraiment toi qui as fait ce code, code fait par une personne maîtrisant quand même pas mal son sujet, je ne vois pas pourquoi tu n'arriverais pas à le modifier de façon à ce qu'il produise ce que tu souhaites.
0
Frank_9982 Messages postés 3 Date d'inscription jeudi 26 août 2021 Statut Membre Dernière intervention 27 août 2021
27 août 2021 à 08:37
Bonjour,

Je suis nouveau et je m'en excuse pour ne pas avoir envoyer le code en texte. Je te joins le code ci-dessous.





import tkinter


# réalisation d'une classe effectuant un compte à rebours dans une fenêtre graphique
class CountDown(tkinter.Tk):
integer_number = 0

# creation de la fenêtre principale.
def __init__(self):
tkinter.Tk.__init__(self)

# creation d'un objet graphique dans lequel se produit la mise à jour du temps enregistré.
def create_widget_in_window(self):
self.label = tkinter.Label(self, text=self.get_hour_format(self.get_integer_number()), fg="red")
self.label.pack()

# saisie et sauvegarde du nombre entier.
def set_integer_number(self):
registered_string = input("Digit an integer number between [1, 60]: ")
self.integer_number = int(registered_string)

# restitution du nombre entier sauvegardé.
def get_integer_number(self):
return self.integer_number

# conversion du nombre entier en format des minutes et secondes.
def get_hour_format(self, int_x):
self.integer_number = int_x
q, r = divmod(self.integer_number, 60)
hour_format = "{:02d}:{:02d}".format(q, r)
return hour_format


# mise à jour et formatage de la valeur saisie au clavier.
def count_down(self):
int_number = self.integer_number - 1
while int_number > 0:
hours = self.get_hour_format(int_number)
self.label.configure(text=hours)
self.label.after(1000, self.count_down)
int_number -= 1


if __name__ == "__main__":
cd = CountDown()
cd.set_integer_number()
cd.create_widget_in_window()
cd.count_down()
cd.mainloop()
0
Bonjour,

Il manque un truc essentiel dans ton code, la boucle tkinter.

Dons juste après
cd.count_down()
ajouter
cd.mainloop()
.

Néanmoins, la façon d'utiliser after n'est pas bonne, il ne faut pas de boucle while, ni de boucle tout court, simplement rappeler la fonction chaque 1000ms tant que la condition est là.

# mise à jour et formatage de la valeur saisie au clavier.
def count_down(self):
    int_number = self.integer_number - 1
    hours = self.get_hour_format(int_number)
    self.label.configure(text=hours)
    if int_number:
        self.label.after(1000, self.count_down)
0
Frank_9982 Messages postés 3 Date d'inscription jeudi 26 août 2021 Statut Membre Dernière intervention 27 août 2021
27 août 2021 à 22:27
Merci du temps que tu m'as dédicacé, c’était des bugs pas facile à repérer.
0