Bonjour
J'avais besoin d'un chronomètre et j'ai récupéré ce petit prog sur le net qui fonctionne très bien:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41 #!/usr/bin/python # -*- coding: utf-8 -*- import time from tkinter import * def lancer_chrono(): global depart,flag flag=1 depart = time.time() top_horloge() def stoper_chrono(): global flag flag=0 def reset_chrono(): global depart depart = time.time() def top_horloge(): global depart,flag y=time.time()-depart minutes = time.localtime(y)[4] secondes = time.localtime(y)[5] if flag : message.configure(text = "%i min %i sec " %(minutes,secondes)) fenetre.after(1000,top_horloge) if __name__=="__main__": flag=0 depart = 0 fenetre=Tk() fenetre.title('Chronomètre') message = Label(fenetre,font=('sans', 20, 'bold'),text="Chrono prêt") message.grid(row=1) Button(fenetre,text='GO !',command=lancer_chrono).grid(row=2) Button(fenetre,text='STOP !',command=stoper_chrono).grid(row=3) Button(fenetre,text='RESET',command=reset_chrono).grid(row=4) fenetre.mainloop()
J'ai souhaité l'intégrer à mon application en le muant en une classe pour pouvoir en tirer un unique objet en faisant ceci:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 class Horloge(object): """ CLASSE qui crée une fenêtre supportant un compteur """ flag =0 depart =0 def __init__(self): self.fenetre =Tk() self.fenetre.config(bd =3, pady=5, padx=5) self.fenetre.title('Chronomètre') self.message =Label(self.fenetre,font=('sans', 20, 'bold'),text="Chrono prêt") self.message.grid() self.fenetre.mainloop() def lancer_chrono(self): global depart,flag flag=1 depart = time.time() self.top_horloge() def stoper_chrono(self): global flag flag=0 def reset_chrono(self): global depart depart = time.time() def top_horloge(self): global depart,flag y=time.time()-depart minutes = time.localtime(y)[4] secondes = time.localtime(y)[5] if flag : self.message.configure(text = "{0} min {1} sec ".format(minutes,secondes)) self.fenetre.after(1000,self.top_horloge)
Mais python me retourne une erreur que je ne parviens pas à interpréter car tout ce que j'ai fait, ça n'est que finalement
transformer des fonctions en méthodes.
Voici le message d'erreur ainsi obtenu:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 self.message.configure(text = "{0} min {1} sec ".format(minutes,secondes)) File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/tkinter/__init__.py", line 1639, in configure return self._configure('configure', cnf, kw) File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/tkinter/__init__.py", line 1629, in _configure self.tk.call(_flatten((self._w, cmd)) + self._options(cnf)) _tkinter.TclError: invalid command name ".!label"
L'utilisation du self semble poser problème.
Qu'en pensez-vous ? Merci.
Partager