Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème avec une boucle while

Sujet résolu
    26 mars 2019 à 21:20:10

     Bonsoir,

    Je suis débutant sur python et je viens de faire mon premier programme avec une interface graphique utilisant tkinter.

    Ce programme est un jeu de dés et voici le code :

    nb=""
    pièce = 10
    cle =0
    def one():
    	global nb
    	nb=1
    def two():
    	global nb
    	nb=2
    def three():
    	global nb
    	nb=3
    def four():
    	global nb
    	nb=4
    def five():
    	global nb
    	nb=5
    def six():
    	global nb
    	nb=6
    def entre():
    	global cle
    	cle =1
    
    
    boutton1=Button(window,text="1" ,command=one)
    boutton1.pack()
    boutton2=Button(window,text="2" ,command=two)
    boutton2.pack()
    boutton3=Button(window,text="3" ,command=three)
    boutton3.pack()
    boutton4=Button(window,text="4", command=four)
    boutton4.pack()
    boutton5=Button(window,text="5", command=five)
    boutton5.pack()
    boutton6=Button(window,text="6",command=six)
    boutton6.pack()
    bouttonentre=Button(window,text="valider",command=entre)
    bouttonentre.pack()
    while pièce!=0	:
    	while cle==0:
    		window.mainloop()	
    		
    	zonetexte.insert(END, str(pièce))
    	pièce=pièce-1
    	nb=str(nb)
    	nb2=r.randint(1,6)
    	nb2=str(nb2)
    	stop="stop"
    	window.mainloop()
    	if nb2 == nb:
    		zonetexte2.insert(END,str(nb2))
    		pièce=pièce+6
    		print ("GAGNE")
    		cle=0
    		window.mainloop()
    	elif nb2 != nb: 
    		zonetexte2.insert(END,str(nb2))
    		print ("PERDU")
    		cle=0
    		window.mainloop()
    	
    else :
    	print ("partie finie")
    		

    Le programme n'est pas entier mais le reste n'est que de l'interface et marche très bien.

    Le problème est donc que, malgré le fait que cle soit egal à 1 (grace au bouton vérifier), la boucle while ne s'en rend pas compte et continue comme si cle=0

    Voila, c'est mon premier message sur le forum et j'espère que mon erreur n'est pas trop stupide.

    (Merci d'avance à ceux qui prendrons le temps de me répondre)

    • Partager sur Facebook
    • Partager sur Twitter
      26 mars 2019 à 21:45:27

      Je suis pas un spécialiste tkinter, mais je pense que c'est pas normal qu'il y ait des mainloop partout.
      • Partager sur Facebook
      • Partager sur Twitter

      Blond, bouclé, toujours le sourire aux lèvres...

        26 mars 2019 à 21:50:38

        LoupSolitaire a écrit:

        Je suis pas un spécialiste tkinter, mais je pense que c'est pas normal qu'il y ait des mainloop partout.


        J'en ai en effet mit une de trop  avant le if nb2==nb. Meme en l'enlevant, cela ne change rien
        • Partager sur Facebook
        • Partager sur Twitter
          26 mars 2019 à 22:30:37

          Il n'en faut qu'une seule.

          EDIT : Et les boucles sont sans doute de trop, comme son nom l'indique, la mainloop est une boucle, et elle est bloquante, c'est à dire qu'une fois que le programme arrive à cette ligne, la mainloop s'exécute jusqu'à ce qu'un évènement l'arrête.

          -
          Edité par LoupSolitaire 26 mars 2019 à 23:22:08

          • Partager sur Facebook
          • Partager sur Twitter

          Blond, bouclé, toujours le sourire aux lèvres...

            27 mars 2019 à 13:33:50

            LoupSolitaire a écrit:

            Il n'en faut qu'une seule.

            EDIT : Et les boucles sont sans doute de trop, comme son nom l'indique, la mainloop est une boucle, et elle est bloquante, c'est à dire qu'une fois que le programme arrive à cette ligne, la mainloop s'exécute jusqu'à ce qu'un évènement l'arrête.

            -
            Edité par LoupSolitaire il y a environ 14 heures

            OK merci pour l'info je vais essayer de modifier tout ca



            • Partager sur Facebook
            • Partager sur Twitter

            Problème avec une 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