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

Python Discussion :

Chronometre : Pb de débutant sur un appel de méthode [Python 3.X]


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Août 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2014
    Messages : 8
    Par défaut Chronometre : Pb de débutant sur un appel de méthode
    Bonjour,

    Encore une fois je ne dois pas voir une erreur grosse comme moi.

    J'ai réalisé un chronomètre qui fonction très bien (c'est déjà ça) avec la marche arrêt par l'intermédiaire de boutons.
    Seulement ne voulant pas en rester là, je veux aussi le déclencher en appuyant sur la barre espace.

    voici le code :
    tout semble se dérouler correctement, sauf que le chronomètre de réagit pas.
    Code python : 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
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
     
    # Suivant que l'on exécute ce script sous Python 3 ou Python 2,
    # on utilisera le module Tkinter correspondant :
    try:
        from tkinter import *      # module Tkinter pour Python 3
    except:
        from Tkinter import *      # module Tkinter pour Python 2
    import time
     
    class Chronometre(Frame):  
        """ insertion du chrnomètre dans un widget frame. """                                                                
        def __init__(self, parent=None, **kw):        
            Frame.__init__(self, parent, kw)
            self._start = 0.0        
            self._elapsedtime = 0.0
            self._running = 0
            self.timestr = StringVar()               
            self.makeWidgets()      
     
        def makeWidgets(self):                         
            """ Make the time label. """
            l = Label(self, textvariable=self.timestr)
            self._setTime(self._elapsedtime)
            l.pack(fill=X, expand=NO, pady=2, padx=2)                      
     
        def _update(self): 
            """ Update the label with elapsed time. """
            self._elapsedtime = time.time() - self._start
            self._setTime(self._elapsedtime)
            self._timer = self.after(50, self._update)
     
        def _setTime(self, elap):
            """ Set the time string to Minutes:Seconds:Hundreths """
            minutes = int(elap/60)
            seconds = int(elap - minutes*60.0)
            hseconds = int((elap - minutes*60.0 - seconds)*100)                
            self.timestr.set('%02d:%02d:%02d' % (minutes, seconds, hseconds))
     
        def Start(self):                                                     
            """ Marche du chrono si arrêt. """
            if not self._running:            
                self._start = time.time() - self._elapsedtime
                self._update()
                self._running = 1        
     
        def Stop(self):                                    
            """ Arrêt du chrono si en marche. """
            if self._running:
                self.after_cancel(self._timer)            
                self._elapsedtime = time.time() - self._start    
                self._setTime(self._elapsedtime)
                self._running = 0
     
        def Reset(self):                                  
            """ Raz du chrono. """
            self._start = time.time()         
            self._elapsedtime = 0.0    
            self._setTime(self._elapsedtime)
     
        def get(self) :
            return self._running
     
     
    def masw(Event,sw):
        if  sw.get() :
            sw.Stop
            print ('stop')
        else:
            sw.Start
            print ('start')
     
    def main():
        root = Tk()
        sw = Chronometre(root)
        sw.pack(side=TOP)
     
        Button(root, text='Start', command=sw.Start).pack(side=LEFT)
        Button(root, text='Stop', command=sw.Stop).pack(side=LEFT)
        Button(root, text='Reset', command=sw.Reset).pack(side=LEFT)
        Button(root, text='Quit', command=root.quit).pack(side=LEFT)
     
        root.bind("<KeyPress-space>",lambda Event=Event, sw=sw :masw(Event,sw))
     
     
        root.mainloop()
     
    if __name__ == '__main__':
        main()

    Merci d'avance pour votre aide

  2. #2
    Membre habitué
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Août 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2014
    Messages : 8
    Par défaut Il suffit de poser la question pour avoir la réponse
    Désolé,
    en relisant mon message j'ai trouvé l'erreur dans le code :

    Lors de l'appel des méthode Start et Stop par la barre d'espace (procédure masw), j'avais oublié les parenthèse () : C'était bien une erreur grosse comme moi !


    Code python : 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
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
     
    # Suivant que l'on exécute ce script sous Python 3 ou Python 2,
    # on utilisera le module Tkinter correspondant :
    try:
        from tkinter import *      # module Tkinter pour Python 3
    except:
        from Tkinter import *      # module Tkinter pour Python 2
    import time
     
    class Chronometre(Frame):  
        """ insertion du chrnomètre dans un widget frame. """                                                                
        def __init__(self, parent=None, **kw):        
            Frame.__init__(self, parent, kw)
            self._start = 0.0        
            self._elapsedtime = 0.0
            self._running = 0
            self.timestr = StringVar()               
            self.makeWidgets()      
     
        def makeWidgets(self):                         
            """ Make the time label. """
            l = Label(self, textvariable=self.timestr)
            self._setTime(self._elapsedtime)
            l.pack(fill=X, expand=NO, pady=2, padx=2)                      
     
        def _update(self): 
            """ Update the label with elapsed time. """
            self._elapsedtime = time.time() - self._start
            self._setTime(self._elapsedtime)
            self._timer = self.after(50, self._update)
     
        def _setTime(self, elap):
            """ Set the time string to Minutes:Seconds:Hundreths """
            minutes = int(elap/60)
            seconds = int(elap - minutes*60.0)
            hseconds = int((elap - minutes*60.0 - seconds)*100)                
            self.timestr.set('%02d:%02d:%02d' % (minutes, seconds, hseconds))
     
        def Start(self):                                                     
            """ Marche du chrono si arrêt. """
            if not self._running:            
                self._start = time.time() - self._elapsedtime
                self._update()
                self._running = 1        
     
        def Stop(self):                                    
            """ Arrêt du chrono si en marche. """
            if self._running:
                self.after_cancel(self._timer)            
                self._elapsedtime = time.time() - self._start    
                self._setTime(self._elapsedtime)
                self._running = 0
     
        def Reset(self):                                  
            """ Raz du chrono. """
            self._start = time.time()         
            self._elapsedtime = 0.0    
            self._setTime(self._elapsedtime)
     
        def get(self) :
            return self._running
     
     
    def masw(Event,sw):
        if  sw.get() :
            sw.Stop()
            print ('stop')
        else:
            sw.Start()
            print ('start')
     
    def main():
        root = Tk()
        sw = Chronometre(root)
        sw.pack(side=TOP)
     
        Button(root, text='Start', command=sw.Start).pack(side=LEFT)
        Button(root, text='Stop', command=sw.Stop).pack(side=LEFT)
        Button(root, text='Reset', command=sw.Reset).pack(side=LEFT)
        Button(root, text='Quit', command=root.quit).pack(side=LEFT)
     
        root.bind("<KeyPress-space>",lambda Event=Event, sw=sw :masw(Event,sw))
     
     
        root.mainloop()
     
    if __name__ == '__main__':
        main()


    Désolé et merci

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 24/03/2009, 16h17
  2. [JNI] Conserver une référence sur plusieurs appels de méthode
    Par KindPlayer dans le forum Entrée/Sortie
    Réponses: 5
    Dernier message: 26/05/2008, 17h50
  3. Pb de débutant sur les pointeurs!!!
    Par benji17c dans le forum C
    Réponses: 6
    Dernier message: 30/09/2003, 17h50
  4. [Kylix] Re Re: débutant sur Kylix et Linux.....
    Par Eclypse dans le forum EDI
    Réponses: 2
    Dernier message: 08/06/2002, 22h53
  5. Réponses: 3
    Dernier message: 07/05/2002, 16h06

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