Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème Tkinter : Bouton utilisable qu'une fois

Projets d'ICN 2018

    20 mai 2018 à 12:41:48

    Bonjour :D

    Je suis en Te actuellement, et pour mon projet d'ICN j'ai eu à construire un programme qui, à partir d'un fichier paramétrique, trace différentes formes sur un Canvas.

    Le système en lui-même fonctionne bien, seulement lorsque je souhaite passer au "niveau" suivant, le bouton qui permet, justement, de passer à la suite ne refonctionne plus, et donc ne permet que de passer du niveau 1 au 2, mais pas du 2 au 3, ce qui bloque la suite. Il semble ne plus avoir sa commande assignée :'(

    Voilà le programme :

    from tkinter import *

    n=1

    def Skip() :
        global n
        global Start
        global game
        print("Skip")
        game.destroy()
        n+=1
        Start()

    def Start() :
        global game
        global Esp
        global n
        global Skip
        global Construction
        print("Start")
       
        game = Tk()

        game.title("Pew")
        game.geometry("400x450")
        Esp = Canvas(game, height = 400, width = 400)
        Esp.grid(row = 0, column = 0)

        Lvl = Label(game,text=n)
        Lvl.grid(row=2,column=0)

        Skip = Button(game,text="Suivant", command=Skip)
        Skip.grid(row=1,column=0)

        Construction(n)


       
    def Construction(Numero) :
        global game
        global Esp
        print("Construction")

        FPar = open("Tstpar.txt","r")
        
        Initial = 0
        if 1== 1 :
            while Initial == 0:
                #Pread = FPar.read()
                Pread = FPar.readline().rstrip()
                #print (Pread)
                if "LVL_" in Pread :
                    print("Borne de niveau trouvée")
                   
                    Pread = FPar.readline().rstrip()
                   
                    if int(Pread) == Numero :
                        print("Niveau trouvé !")
                        #DEBUT DE LA CONSTRUCTION
                        Nbrcarres = FPar.readline().rstrip()

                        print(Nbrcarres," carrés à construire")

                        for Tst in range(0, int(Nbrcarres)) :
                            #print("Tst1")
                            X = FPar.readline().rstrip()
                            Y = FPar.readline().rstrip()
                            Taille = FPar.readline().rstrip()
                            Couleur = FPar.readline().rstrip()

                            print (X,Y,Taille,Couleur)

                            Esp.create_rectangle(X,Y,int(X)+int(Taille),int(Y)+int(Taille),fill=Couleur)

                        Nbrronds = FPar.readline().rstrip()
                        print(Nbrronds," ronds à construire")

                        for Tst in range(0, int(Nbrronds)) :
                            X = FPar.readline().rstrip()
                            Y = FPar.readline().rstrip()
                            Diametre = FPar.readline().rstrip()
                            Couleur = FPar.readline().rstrip()
                           
                            print (X,Y,Diametre,Couleur)
                            Esp.create_oval(X,Y,int(X)+int(Diametre),int(Y)+int(Diametre),fill=Couleur)

                        print("Construction terminée")


                        Initial = 1
        FPar.close()

    Start()
       
    game.mainloop()

    ATTENTION : le programme, pour fonctionner, a évidement besoin du fichier paramétrique suivant, nommé Txtpar.txt. Voici le texte à intégrer :

    LVL_
    1
    1
    50
    50
    50
    blue
    1
    150
    150
    50
    red
    LVL_
    2
    9
    50
    50
    75
    red
    50
    125
    75
    pink
    50
    200
    75
    red
    125
    50
    75
    pink
    125
    125
    75
    red
    125
    200
    75
    pink
    200
    50
    75
    red
    200
    125
    75
    pink
    200
    200
    75
    red
    0
    LVL_
    3
    0
    9
    50
    50
    75
    red
    50
    125
    75
    pink
    50
    200
    75
    red
    125
    50
    75
    pink
    125
    125
    75
    red
    125
    200
    75
    pink
    200
    50
    75
    red
    200
    125
    75
    pink
    200
    200
    75
    red
    LVL_
    4
    9
    50
    50
    75
    red
    50
    125
    75
    pink
    50
    200
    75
    red
    125
    50
    75
    pink
    125
    125
    75
    red
    125
    200
    75
    pink
    200
    50
    75
    red
    200
    125
    75
    pink
    200
    200
    75
    red
    9
    50
    50
    75
    red
    50
    125
    75
    pink
    50
    200
    75
    red
    125
    50
    75
    pink
    125
    125
    75
    red
    125
    200
    75
    pink
    200
    50
    75
    red
    200
    125
    75
    pink
    200
    200
    75
    red
    LVL_
    5
    9
    50
    50
    75
    pink
    50
    125
    75
    red
    50
    200
    75
    pink
    125
    50
    75
    red
    125
    125
    75
    pink
    125
    200
    75
    red
    200
    50
    75
    pink
    200
    125
    75
    red
    200
    200
    75
    pink
    9
    50
    50
    75
    red
    50
    125
    75
    pink
    50
    200
    75
    red
    125
    50
    75
    pink
    125
    125
    75
    red
    125
    200
    75
    pink
    200
    50
    75
    red
    200
    125
    75
    pink
    200
    200
    75
    red
    LVL_
    6
    4
    50
    150
    100
    lime
    150
    50
    100
    lime
    150
    150
    100
    green
    50
    50
    100
    green
    1
    75
    75
    150
    lime
    LVL_
    7
    1
    75
    75
    150
    lime
    4
    50
    150
    100
    lime
    150
    50
    100
    lime
    150
    150
    100
    green
    50
    50
    100
    green

    Merci d'avance de votre aide ;)

    • Partager sur Facebook
    • Partager sur Twitter
      20 mai 2018 à 16:23:11

      Bonjour,

      Le message qui suit est une réponse automatique activée par un membre de l'équipe. Les réponses automatiques leur permettent d'éviter d'avoir à répéter de nombreuses fois la même chose, ce qui leur fait gagner du temps et leur permet de s'occuper des sujets qui méritent plus d'attention.
      Nous sommes néanmoins ouverts et si vous avez une question ou une remarque, n'hésitez pas à contacter la personne en question par Message Privé.

      Pour plus d'informations, nous vous invitons à lire les règles générales du forum

      Merci d'utiliser la mise en forme de code

      Les forums d'Openclassrooms disposent d'une fonctionnalité permettant de colorer et mettre en forme les codes source afin de les rendre plus lisibles et faciles à manipuler par les intervenants. Pour cela, il faut utiliser le bouton Image de l'éditeur, choisir un des langages proposés et coller votre code dans la zone prévue. Si vous utilisez l'éditeur de messages en mode Markdown, il faut utiliser les balises <pre class="brush: c;">Votre code ici</pre>.

      • Partager sur Facebook
      • Partager sur Twitter

      Problème Tkinter : Bouton utilisable qu'une fois

      × 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