IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Tkinter Python Discussion :

essaie : timer et horloge [Fait]


Sujet :

Tkinter Python

  1. #1
    Membre éclairé
    Inscrit en
    Novembre 2002
    Messages
    291
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 291
    Par défaut essaie : timer et horloge
    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é)

  2. #2
    Membre éprouvé

    Profil pro
    Inscrit en
    Février 2004
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2004
    Messages : 76
    Par défaut
    salut,

    Pourquoi crée-tu un thread? A moins que ton horloge soit intégrée à une autre application je ne vois pas l'utilité.

  3. #3
    Membre éclairé
    Inscrit en
    Novembre 2002
    Messages
    291
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 291
    Par défaut


    Oui bien entendu, mon horloge est integrée dans mon application, elle sert de chronometre.... mais si je le lance et que je ferme la fenetre(sans arreter le "timer").... j'ai l'erreur :"ce programme ne repond pas..."

    de plus si je deplace la fenetre, le chronometre s'arrete jusqu'a ce que je relache le bouton de la souris...

    Si quelqu'un pour vais m'aider ?

    (J'ai changé ma boucle, j'ai mis

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
        def run(self):
            self._var = True
            while self._var:
                self.tournerAiguille()
                sleep(1)
    => http://guigui.developpez.com/sources/TkHorloge/

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] Timer (tic d'horloge)
    Par Schmidt dans le forum Windows Forms
    Réponses: 4
    Dernier message: 30/03/2013, 11h48
  2. [Flash Pascal] Essai d'une horloge numérique
    Par Roland Chastain dans le forum Flash Pascal
    Réponses: 3
    Dernier message: 09/06/2012, 20h34
  3. timer ou horloge sous excel ?
    Par bobi357 dans le forum Excel
    Réponses: 2
    Dernier message: 20/05/2009, 17h25
  4. Comment réaliser une horloge numérique grâce au timer 8254 ?
    Par jojo_ol76 dans le forum Autres architectures
    Réponses: 1
    Dernier message: 29/03/2007, 19h56
  5. [horloge] conflit caractère / timer
    Par JeanJean dans le forum C
    Réponses: 10
    Dernier message: 09/05/2003, 23h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo