Partage
  • Partager sur Facebook
  • Partager sur Twitter

Projet SIN Terminal STI2D

Sujet résolu
    26 mars 2015 à 15:28:26

    Bonjour a tous, je suis actuellement en terminal et j'aurais besoin de vous pour mon projet.

    Le but de mon projet est de crée deux chronomètre qui ce lance en même temps, qu'on peux reset en même temps mais qu'on peux arrêter de manière différentes. Tous cela en utiliser les touches du clavier pour lancé , donc j'avais commencé a faire mon programme les chronomètres fonctionne mais je n'arrive pas a les faires fonctionné par une touche et les lancer en même temps.

    Voici mon programme:

    class Chronometre(Frame):  # definition de la class'Chronomètre' dans Frame                                                              
        def __init__(self, parent=None, **kw):    # definition initiale de la class     
            Frame.__init__(self, parent, kw)
            self._start = 0.0        
            self._elapsedtime = 0.0
            self._running = 0
            self.timestr = StringVar()               
            self.makeWidgets()      
     
        def makeWidgets(self): #definition pour afficher le temp                         
            l = Label(self, textvariable=self.timestr)
            self._setTime(self._elapsedtime)
            l.pack(fill=X, expand=NO, pady=10, padx=10)                      
     
        def _update(self): # definition du reset
            self._elapsedtime = time.time() - self._start
            self._setTime(self._elapsedtime)
            self._timer = self.after(50, self._update)
     
        def _setTime(self, elap): #définition du temps en minutes/secondes/millisecondes
            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): #lancement du chrono s'il est en arrêt                                                     
            if not self._running:            
                self._start = time.time() - self._elapsedtime
                self._update()
                self._running = 1        
     
        def Stop(self): # arrêt du chrono s'il est 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): # remise au zéro 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 masv(Event,sv):
        if  sv.get() :
            sv.Stop
            print ('stop')
        else:
            sv.Start
            print ('start')
            
    def main(): # definition de la fenetre de tkinter
        root = Tk()
        root.title('projet 2014-2015')
        sw = Chronometre(root)
        sw.pack(side=LEFT,padx=30,pady=30)
        sv = Chronometre(root)
        sv.pack(side=RIGHT,padx=30,pady=30)
        Button(root, text='Start', command=sw.Start).pack(side=LEFT)# bouton start
        Button(root, text='Stop', command=sw.Stop).pack(side=LEFT) # bouton stop
        Button(root, text='Reset', command=sw.Reset).pack(side=LEFT)#bouton reset
        Button(root, text='Start', command=sv.Start).pack(side=LEFT)# bouton start
        Button(root, text='Stop', command=sv.Stop).pack(side=LEFT) # bouton stop
        Button(root, text='Reset', command=sv.Reset).pack(side=LEFT)#bouton reset
    
        root.bind('<a>', sw.Start)
        
        root.mainloop()
     
    
    if __name__ == '__main__':
        main()

    en espérant que vous pourriez répondre a ma demande

    • Partager sur Facebook
    • Partager sur Twitter
      26 mars 2015 à 17:52:25

      Salut. Bon la solution que je te propose n'est peut être pas la meilleure mais elle fonctionne.

      from tkinter import *
      import time
      
      class Chronometre(Frame):  # definition de la class'Chronomètre' dans Frame                                                             
          def __init__(self, parent=None, **kw):    # definition initiale de la class    
              Frame.__init__(self, parent, kw)
              self._start = 0.0       
              self._elapsedtime = 0.0
              self._running = 0
              self.timestr = StringVar()              
              self.makeWidgets()     
        
          def makeWidgets(self): #definition pour afficher le temp                        
              l = Label(self, textvariable=self.timestr)
              self._setTime(self._elapsedtime)
              l.pack(fill=X, expand=NO, pady=10, padx=10)                     
        
          def _update(self): # definition du reset
              self._elapsedtime = time.time() - self._start
              self._setTime(self._elapsedtime)
              self._timer = self.after(50, self._update)
        
          def _setTime(self, elap): #définition du temps en minutes/secondes/millisecondes
              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): #lancement du chrono s'il est en arrêt                                                    
              if not self._running:           
                  self._start = time.time() - self._elapsedtime
                  self._update()
                  self._running = 1       
        
          def Stop(self): # arrêt du chrono s'il est 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): # remise au zéro 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 masv(Event,sv):
          if  sv.get() :
              sv.Stop
              print ('stop')
          else:
              sv.Start
              print ('start')
               
      def All(sw, sv): # Une fonction lancant les 2 chrono
          sw.Start()
          sv.Start()
        
              
      def main(): # definition de la fenetre de tkinter
          root = Tk()
          root.title('projet 2014-2015')
          sw = Chronometre(root)
          sw.pack(side=LEFT,padx=30,pady=30)
          sv = Chronometre(root)
          sv.pack(side=RIGHT,padx=30,pady=30)
          Button(root, text='Start', command=sw.Start).pack(side=LEFT)# bouton start
          Button(root, text='Stop', command=sw.Stop).pack(side=LEFT) # bouton stop
          Button(root, text='Reset', command=sw.Reset).pack(side=LEFT)#bouton reset
          Button(root, text='All', command= lambda : All(sw, sv)).pack(side=LEFT)#bouton lancant les 2 chonos
          Button(root, text='Start', command=sv.Start).pack(side=LEFT)# bouton start
          Button(root, text='Stop', command=sv.Stop).pack(side=LEFT) # bouton stop
          Button(root, text='Reset', command=sv.Reset).pack(side=LEFT)#bouton reset
       
          root.bind('<a>', sw.Start)
           
          root.mainloop()
        
       
      if __name__ == '__main__':
          main()



      • Partager sur Facebook
      • Partager sur Twitter
        26 mars 2015 à 18:09:01

        J'ai pas beaucoup de temps pour les explications, mais voici une solution. Les autres pourront t'expliquer si tu ne comprenais pas.

        #!/usr/bin/env python3
        # -*- coding: utf-8 -*-
        
        from tkinter import *
        import time
        from functools import partial
        
        class Chronometre(Frame):  # definition de la class'Chronomètre' dans Frame                                                             
            def __init__(self, parent=None, **kw):    # definition initiale de la class    
                Frame.__init__(self, parent, kw)
                self._start = 0.0       
                self._elapsedtime = 0.0
                self._running = 0
                self.timestr = StringVar()              
                self.makeWidgets()     
          
            def makeWidgets(self): #definition pour afficher le temp                        
                l = Label(self, textvariable=self.timestr)
                self._setTime(self._elapsedtime)
                l.pack(fill=X, expand=NO, pady=10, padx=10)                     
          
            def _update(self): # definition du reset
                self._elapsedtime = time.time() - self._start
                self._setTime(self._elapsedtime)
                self._timer = self.after(50, self._update)
          
            def _setTime(self, elap): #définition du temps en minutes/secondes/millisecondes
                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, event=None): #lancement du chrono s'il est en arrêt                                                    
                if not self._running:           
                    self._start = time.time() - self._elapsedtime
                    self._update()
                    self._running = 1       
          
            def Stop(self): # arrêt du chrono s'il est 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): # remise au zéro 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 masv(Event,sv):
            if  sv.get() :
                sv.Stop
                print ('stop')
            else:
                sv.Start
                print ('start')
                 
        def start_chronos(chronos, event):
            for chrono in chronos:
                chrono.Start()
                
        def main(): # definition de la fenetre de tkinter
            root = Tk()
            root.title('projet 2014-2015')
            sw = Chronometre(root)
            sw.pack(side=LEFT,padx=30,pady=30)
            sv = Chronometre(root)
            sv.pack(side=RIGHT,padx=30,pady=30)
            Button(root, text='Start', command=sw.Start).pack(side=LEFT)# bouton start
            Button(root, text='Stop', command=sw.Stop).pack(side=LEFT) # bouton stop
            Button(root, text='Reset', command=sw.Reset).pack(side=LEFT)#bouton reset
            Button(root, text='Start', command=sv.Start).pack(side=LEFT)# bouton start
            Button(root, text='Stop', command=sv.Stop).pack(side=LEFT) # bouton stop
            Button(root, text='Reset', command=sv.Reset).pack(side=LEFT)#bouton reset
         
            root.bind('', partial(start_chronos, (sw, sv)))
             
            root.mainloop()
          
         
        if __name__ == '__main__':
            main()
        

        PS: si possible essaie de respecter les conventions de style de la PEP8

        -
        Edité par Dan737 26 mars 2015 à 18:10:00

        • Partager sur Facebook
        • Partager sur Twitter
          1 avril 2015 à 11:39:48

          merci de cette réponse ceci a beaucoup aider
          • Partager sur Facebook
          • Partager sur Twitter

          Projet SIN Terminal STI2D

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown