bonjour,

voilà j'essaye de faire une petite horloge... pour l'instant ce n'est que le debut, donc il n'y que l'aiguille des secondes..

Cependant j'ai deja un probleme : voici mon code :

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
class Horloge(Thread):
    def __init__(self, master) :
        Thread.__init__(self)
 
        self._root = master
        self._w = Canvas(self._root, width=300, height=300)
        self._w.pack()
 
        self._w.create_oval(10,10,210,210)
        seconde = self._w.create_line(110, 110, 110, 10)
        self._i = 1
 
    def start(self):
        tpsPrec = time()
        while True:
            tps = time()
            if tps - tpsPrec >= 1:
                self.tournerAiguille()
                tpsPrec = tps
 
    def tournerAiguille(self):
        nouvx = 110 + cos(2*pi / 60 * (self._i % 60) - pi/2) * 100
        nouvy = 110 + sin(2*pi / 60 * (self._i % 60) - pi/2) * 100
        self._w.delete(self._seconde)
        self._seconde = self._w.create_line(110, 110, nouvx, nouvy)
        self._i += 1
        self._root.update()
 
#pour la lancer :
h = Horloge(root)
h.start()
mon probleme : cela ralentit tout mon programme et quand je ferme l'application j'ai comme erreur :
File "D:\......py", line 820, in creerWidgets
self._horloge.start()
File "D:\......py", line 56, in start
self.tournerAiguille()
File "D:\......py", line 62, in tournerAiguille
self._w.create_line(110, 110, nouvx, nouvy)
File "D:\Logiciels\Python\lib\lib-tk\Tkinter.py", line 2090, in create_line
return self._create('line', args, kw)
File "D:\Logiciels\Python\lib\lib-tk\Tkinter.py", line 2076, in _create
return getint(self.tk.call(
TclError: invalid command name ".19885912.19885392"
je comprends pas....

merci de votre aide

edit : en fait il faut redefinir la fonction RUN et non START (je laisse pour montrer mon erreur) mais je cherche tjrs des optimisations.... de plus je ne sais pas comment l'arreter quand on ferme l'application (en cliquant sur la croix.. car il reste lancé)