Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème de commande de bouton tkinter

Sujet résolu
    17 octobre 2021 à 12:09:41

    Bonjour,

    j'ai un problème lorsque je lance mon programme un de mes boutons tkinter s'active automatiquement et plusieurs fois.

    Voici mon code :

    from tkinter import *
    global pseudo1
    global pseudo2
    
    class Player:
        def __init__(self):
            self.nom
            self.vie= 100
    
        def nom(self, nom):
            self.nom= nom
    
        def get_vie(self):
            return self.vie
    
        def get_nom(self):
            return self.nom
    
        def degat(self):
            self.vie-= 10
    
    
    
    player1= Player()
    player2= Player()
    
    play = False
    
    tour_joueur= player1
    
    def changer_tour():
        global label_top_frame
        global tour_joueur
    
        if tour_joueur== player1:
            tour_joueur= player2
            label_top_frame.configure(text= "Au tour de : "+ player2.get_nom()+ " de jouer")
        else:
            tour_joueur= player1
            label_top_frame.configure(text="Au tour de : " + player1.get_nom() + " de jouer")
    
    def start_game():
        global window1
        global start_button
        global label_empty_window1
    
        label_empty_window1.configure(text= "Veuillez remplir les champs !")
        start_button.configure(text= "Veuillez fermer cette page", state= DISABLED)
        print(pseudo1.get())
        print(pseudo2.get())
    
    def attack():
        global left_vie_left
        global right_vie_left
    
        if tour_joueur== player1:
            player2.degat()
            right_vie_left.configure(text= player2.get_vie())
            print("Vie de "+ player2.get_nom()+ " : "+ str(player2.get_vie()))
    
        else:
            player1.degat()
            left_vie_left.configure(text= player1.get_vie())
            print("Vie de "+ player1.get_nom()+ " : "+ str(player1.get_vie()))
        changer_tour()
    
    def pass_tour():
        changer_tour()
    
    #creation de la fenetre de démarrage
    window1= Tk()
    
    #modification de la fenetre
    window1.title("Game")
    window1.geometry("240x120")
    
    #frame
    start_title_frame= Frame(window1)
    frame_empty_window1= Frame(window1)
    start_button_frame= Frame(window1)
    pseudo_frame= Frame(window1)
    
    #label
    label_empty_window1= Label(frame_empty_window1, font=("Courrier", 25), bg="white", fg="black")
    
    #titre
    titre= Label(start_title_frame, text= "Jeu", font=("Courrier", 25), bg="white", fg="black")
    
    #input
    pseudo1= StringVar()
    pseudo2= StringVar()
    
    pseudo1_entry= Entry(pseudo_frame, width= 20, textvariable= pseudo1)
    pseudo2_entry= Entry(pseudo_frame, width= 20, textvariable= pseudo2)
    
    #boutons
    start_button= Button(start_button_frame, text="Start", font=("Courrier", 25), bg="white", fg="black", command=start_game)
    
    #affichage des éléments
    label_empty_window1.pack()
    titre.pack()
    pseudo1_entry.pack()
    pseudo2_entry.pack()
    start_button.pack()
    
    #affichage frame
    start_title_frame.pack()
    frame_empty_window1= Frame(window1)
    pseudo_frame.pack()
    start_button_frame.pack()
    
    window1.mainloop()
    
    player1.nom(pseudo1.get())
    player2.nom(pseudo2.get())
    
    # ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    # Nouvelle fenêtre
    # ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    
    # creation de la fenetre de jeu
    window2 = Tk()
    
    window2.geometry("720x480")
    
    # modification de la fenetre
    window2.title("Game")
    
    # frame du haut
    top_frame= Frame(window2)
    
    label_top_frame= Label(top_frame, text= "Au tour de : "+ player1.get_nom()+ " de jouer", font=("Courrier", 25), bg="white", fg="red")
    
    # frame du bas
    bot_frame= Frame(window2)
    
    # frame du bas gauche
    left_bot_frame= Frame(bot_frame)
    
    # pseudo gauche
    left_pseudo_label= Label(bot_frame, text= player1.get_nom(), font=("Courrier", 25), bg="white", fg="red").grid(row= 0, column= 0)
    
    # espacement
    Label(bot_frame).grid(row= 1, column= 0)
    
    # info gauche
    left_vie_left= Label(bot_frame, text= 100, font=("Courrier", 25), bg="white", fg="red")
    
    # espacement
    Label(bot_frame).grid(row=3 , column=0)
    
    # boutons de gauche
    left_attack_button= Button(bot_frame, text= "Attaquer", font=("Courrier", 25), bg="white", fg="red", command= attack()).grid(row= 4, column= 0)
    left_pass_button= Button(bot_frame, text= "Passer", font=("Courrier", 25), bg="white", fg="red", command= pass_tour()).grid(row= 5, column= 0)
    
    # espacement du milieu
    
    Label(bot_frame, font=("Courrier", 25), bg="white").grid(row=0 , column=1, padx= 180)
    Label(bot_frame, font=("Courrier", 25), bg="white").grid(row=1 , column=1, padx= 180)
    Label(bot_frame, font=("Courrier", 25), bg="white").grid(row=2 , column=1, padx= 180)
    Label(bot_frame, font=("Courrier", 25), bg="white").grid(row=3 , column=1, padx= 180)
    Label(bot_frame, font=("Courrier", 25), bg="white").grid(row=4 , column=1, padx= 180)
    Label(bot_frame, font=("Courrier", 25), bg="white").grid(row=5 , column=1, padx= 180)
    
    # pseudo de droite
    right_pseudo_label= Label(bot_frame, text= player2.get_nom(), font=("Courrier", 25), bg="white", fg="blue").grid(row= 0 , column= 2)
    
    # espacement
    Label(bot_frame).grid(row=1 , column=2)
    
    # info de droite
    right_vie_left= Label(bot_frame, text= 100, font=("Courrier", 25), bg="white", fg="blue")
    
    # espacement
    Label(bot_frame).grid(row=3 , column=2)
    
    # boutons de droite
    
    right_attack_button= Button(bot_frame, text= "Attaquer", font=("Courrier", 25), bg="white", fg="blue", command= attack()).grid(row=4 , column=2)
    right_pass_button= Button(bot_frame, text= "Passer", font=("Courrier", 25), bg="white", fg="blue", command= pass_tour()).grid(row=5 , column=2)
    
    # afficher autres frames
    
    left_vie_left.grid(row=2 , column=0)
    right_vie_left.grid(row=2 , column=2)
    
    label_top_frame.grid(columnspan= 5)
    top_frame.grid()
    bot_frame.grid(row= 1)
    
    window2.mainloop()

    Merci d'avance.

    • Partager sur Facebook
    • Partager sur Twitter
      17 octobre 2021 à 13:20:25

      trop lent hehe

      -
      Edité par ReneChar 17 octobre 2021 à 13:20:52

      • Partager sur Facebook
      • Partager sur Twitter
      Anonyme
        17 octobre 2021 à 13:20:26

        Salut,

        Beaucoup trop de chose ne vont pas dans ton code, pour ce que est de ton problème c'est ligne 153,154 et 179,180.

        Quand on utilise le paramètre command dans Button, on ne met pas les guillemets:

        left_attack_button= Button(bot_frame, text= "Attaquer", font=("Courrier", 25), bg="white", fg="red", command= attack).grid(row= 4, column= 0)
        • Partager sur Facebook
        • Partager sur Twitter

        Problème de commande de bouton tkinter

        × 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