Partage
  • Partager sur Facebook
  • Partager sur Twitter

Bouton qui fait avancer de 1 la boucle while

Sujet résolu
    14 mai 2013 à 21:16:12

    Bonjour, j'aimerais créer un bouton à l'aide de Tkinter, qui, à chaque fois que je clique dessus fait avancer de x+1 ma boucle while. Est-ce possible ?
    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      14 mai 2013 à 21:41:27

      i=0
      while i<100: .... i=i+1

      Imaginons que j'ai quelque chose comme ça. Je voudrais créer un bouton, qui, dès que je clique augmente i de 1. Tu vois ce que je veux dire ? :/
      • Partager sur Facebook
      • Partager sur Twitter
      Anonyme
        14 mai 2013 à 21:51:44

        Oui peut-être avec les thread je sais pas, je vois pas l'intérêt en fait, en pratique ça ne se fait pas.

        -
        Edité par Anonyme 14 mai 2013 à 21:51:58

        • Partager sur Facebook
        • Partager sur Twitter
          15 mai 2013 à 13:35:33

          Qu'est ce que tu cherches à faire ?

          • Partager sur Facebook
          • Partager sur Twitter
          OCaml, un langage expressif et performant qui vous ferait du bien.
            15 mai 2013 à 14:28:32

            from tkinter import*
            from random import randrange
            
            rouge=["1","1","1","1","1","1","1","1","1","1"]
            bleu=["0","0","0","0","0","0","0","0","0","0"]
            
            
            i=0
            while i<10000: # On fait boucler un nombre infini de fois jusqu'à que la boucle soit stoppée quand les rouges ou les bleus auront disparus.
                c=0
                while c<10:
                    k=0
                    j=0
                    while j<1:
                        n=randrange(0,2)
                        if n==0:
                            bleu.append("0")
                            del(rouge[0])
                            if len(rouge)==0:
                                print("Les rouges ont disparus en ",i," générations")
                                k=1 # cela stoppe la boucle d'après...
                                c=10 # ... Et la grande boucle... 
                                i=10000 # ... Et la boucle de générations. Ainsi, le programme s'arrète quand il n'y a plus de rouges.                    
                        j=j+1
                    while k<1:
                        n=randrange(0,2)
                        if n==1:
                            rouge.append("1")
                            del(bleu[0])
                            if len(bleu)==0:
                                print("Les bleus ont disparus en ",i," générations")
            
                                j=1 # pareil qu'en haut, on stoppe les boucles.
                                c=10 
                                i=10000
                        k=k+1
                    c=c+1
                i=i+1
            
            def boutonsuivant():
                
            
                n1=
                n2=
                n3=
                n4=
                n5=
                n6=
                n7=
                n8=
                n9=
                n10=
                n11=
                n12=
                n13=
                n14=
                n15=
                n16=
                n17=
                n18=
                n19=
                n20=
                                
                
                coul=['red','blue']
            #Les cercles
                can.create_oval(0,0,100,100,width=2,fill=coul[n1])
                can.create_oval(0,100,100,200,width=2,fill=coul[n2])
                can.create_oval(0,200,100,300,width=2,fill=coul[n3])
                can.create_oval(0,300,100,400,width=2,fill=coul[n4])
            # Deuxième colone
                can.create_oval(100,0,200,100,width=2,fill=coul[n5])
                can.create_oval(100,100,200,200,width=2,fill=coul[n6])
                can.create_oval(100,200,200,300,width=2,fill=coul[n7])
                can.create_oval(100,300,200,400,width=2,fill=coul[n8])
            #3eme colone
                can.create_oval(200,0,300,100,width=2,fill=coul[n9])
                can.create_oval(200,100,300,200,width=2,fill=coul[n10])
                can.create_oval(200,200,300,300,width=2,fill=coul[n11])
                can.create_oval(200,300,300,400,width=2,fill=coul[n12])
            #4eme colone
                can.create_oval(300,0,400,100,width=2,fill=coul[n13])
                can.create_oval(300,100,400,200,width=2,fill=coul[n14])
                can.create_oval(300,200,400,300,width=2,fill=coul[n15])
                can.create_oval(300,300,400,400,width=2,fill=coul[n16])
            #5ém colone
                can.create_oval(400,0,500,100,width=2,fill=coul[n17])
                can.create_oval(400,100,500,200,width=2,fill=coul[n18])
                can.create_oval(400,200,500,300,width=2,fill=coul[n19])
                can.create_oval(400,300,500,400,width=2,fill=coul[n20])
            
            def cercle():
               
                coul=['red','blue']
            #Les cercles
                can.create_oval(0,0,100,100,width=2,fill=coul[1])
                can.create_oval(0,100,100,200,width=2,fill=coul[1])
                can.create_oval(0,200,100,300,width=2,fill=coul[1])
                can.create_oval(0,300,100,400,width=2,fill=coul[1])
            # Deuxième colone
                can.create_oval(100,0,200,100,width=2,fill=coul[1])
                can.create_oval(100,100,200,200,width=2,fill=coul[1])
                can.create_oval(100,200,200,300,width=2,fill=coul[1])
                can.create_oval(100,300,200,400,width=2,fill=coul[1])
            #3eme colone
                can.create_oval(200,0,300,100,width=2,fill=coul[1])
                can.create_oval(200,100,300,200,width=2,fill=coul[1])
                can.create_oval(200,200,300,300,width=2,fill=coul[0])
                can.create_oval(200,300,300,400,width=2,fill=coul[0])
            #4eme colone
                can.create_oval(300,0,400,100,width=2,fill=coul[0])
                can.create_oval(300,100,400,200,width=2,fill=coul[0])
                can.create_oval(300,200,400,300,width=2,fill=coul[0])
                can.create_oval(300,300,400,400,width=2,fill=coul[0])
            #5ém colone
                can.create_oval(400,0,500,100,width=2,fill=coul[0])
                can.create_oval(400,100,500,200,width=2,fill=coul[0])
                can.create_oval(400,200,500,300,width=2,fill=coul[0])
                can.create_oval(400,300,500,400,width=2,fill=coul[0])
              
            
            ##### Programme principal :  #####
            fen=Tk()
            can=Canvas(fen, width =500, height =400, bg ='ivory')
            can.pack(side =TOP, padx =5, pady =5)
            b2=Button(fen,text='Commencer!',command=cercle)
            b2.pack(side =RIGHT, padx =3, pady =3)
            b1=Button(fen,text='Génération suivante',command=boutonsuivant)
            b1.pack(side =LEFT, padx =3, pady=3)
            b3=Button(fen, text='Quitter', command=fen.destroy)
            b3.pack()
            fen.mainloop()
            

            Voilà mon programme. Je voudrais faire en sorte qu'à chaque fois que je clique sur le bouton "Génération suivante", j'avance de i+1.
            • Partager sur Facebook
            • Partager sur Twitter
              15 mai 2013 à 16:09:27

              Non mais personne ne va lire 130 lignes de code en espérant deviner quel est ton objectif final. Ce que tu veux faire, c'est par exemple « dessiner un cercle qui augmente de taille », pas « incrémenter de 1 une variable ».

              • Partager sur Facebook
              • Partager sur Twitter
              OCaml, un langage expressif et performant qui vous ferait du bien.

              Bouton qui fait avancer de 1 la boucle while

              × 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