Programmation orientée objet

Fermé
Manubg - 24 avril 2023 à 11:05

Bonjour,

Quelqu'un peut m'aide a crée de différents fenêtre à l'intérieur de bouton du 2e écran 

Voici mon code 

import tkinter as tk

class App(tk.Tk):
    def __init__(self):
        tk.Tk.__init__(self)
    
        self.title("Robot Survivor")
        self.width = 1000 # largeur des écrans/fenêtres
        self.height = 800  # hauteur des écrans/fenêtres
        self.geometry("%ix%i" % (self.width, self.height))

        """
        Premier écran
        """
        self.frame_intro = tk.Frame(self, width=self.width, height=self.height)
        self.frame_intro.pack()
         
        # Chargement de l'image
        img_path = "accueil.png"  # Chemin relatif de l'image par rapport au script Python
        img = tk.PhotoImage(file=img_path)
        
        # Créer un widget Label pour afficher l'image
        self.label_image = tk.Label(self.frame_intro, image=img)
        self.label_image.image = img  # Garde une référence à l'image pour éviter sa suppression par le garbage collector
        self.label_image.place(relx=0.5, rely=0.5, anchor="center")
        
        
                
        # Créer un titre et le placer dans le premier écran avec la méthode "place"
        self.titre_accueil = tk.Label(self.frame_intro, text="Robot survivor", font=("Courier", 44, "bold"))
        self.titre_accueil.place(relx=0.1, rely=0.3, anchor="w")
       
        
        # Créer deux boutons et les placer dans le premier écran avec la méthode "place"
      

        self.btn1 = tk.Button(self.frame_intro,text="JOUER",command=self.MenuToGame, bg="green")
        self.btn1.place(relx=0.5, rely=0.7, anchor="center")
                    
        self.btn2 = tk.Button(self.frame_intro,text="MEILLEUR SCORE",command=self.MenuToStats, bg="green")
        self.btn2.place(relx=0.5, rely=0.8, anchor="center")
        
        self.btn3 = tk.Button(self.frame_intro,text="QUITTER",command=self.destroy, bg="red")
        self.btn3.place(relx=0.5, rely=0.9, anchor ="center")
        
        """
      
        2e écran
        """
        # Cette fois, on crée le Frame, mais on ne l'affiche pas encore (on ne le "pack" pas encore)
        self.frame_game = tk.Frame(self, width=self.width, height=self.height)
        
        """self.frame_start = tk.Frame(self, width=self.width, height=self.height)"""
        # Création de l'image

        self.bg_image = tk.PhotoImage(file="imaged.png")
        #self.bg_image = self.bg_image.subsample(2,2)
        self.btn4 = tk.Button(self.frame_game, text="DESERT", bg="green",command=self.startTogame_desert,image=self.bg_image)
        self.btn4.place(relx=0.2, rely=0.9, anchor="center")
       

        self.btn5 = tk.Button(self.frame_game, text="CAMPAGNE", bg="yellow",command=self.startTogame_campagne)
        self.btn5.place(relx=0.5, rely=0.9, anchor="center")

        self.btn6 = tk.Button(self.frame_game, text="VILLE", bg="red",command=self.startTogame_ville)
        self.btn6.place(relx=0.8, rely=0.9, anchor="center")
       

        # Créer un canvas et le placer au milieu du second écran, avec la méthode "place"
       
        self.canvas = tk.Canvas(self.frame_game, width=self.width-100, height=self.height*3/4,)
        self.canvas.place(relx=0.5, rely=0.05, anchor=tk.N)

        # Créer un bouton "menu", placé sous le canvas avec la méthode "place"
        """self.home_img = tk.PhotoImage(file='./Image 1.png')
        self.home_img = self.home_img.subsample(18,18) # Diminuer la taille de l'image par un facteur 5
        self.btn2 = tk.Button(self.frame_game,text="Menu",command=self.GameToMenu,image=self.home_img)
        self.btn2.place(relx=0.9, rely=0.2, anchor="center")"""
    
        self.btn2 = tk.Button(self.frame_game,text="RETOUR", bg ="red",command=self.GameToMenu)
        self.btn2.place(relx=0.9, rely=0.2, anchor="center")
        

        """
        3e écran
        """
        self.frame_stats = tk.Frame(self, width=self.width, height=self.height)
        
        # Créer de fausses stats et les placer dans le troisème écran avec la méthode "place"
        self.text_stats = tk.Label(self.frame_stats, text="Nombre de victoires: 0")
        self.text_stats.place(relx=0.5, rely=0.3, anchor="center")

        # Créer un bouton "menu", placé au centre de l'écran avec la méthode "place"
        """self.btn3 = tk.Button(self.frame_stats,text="Menu",command=self.StatsToMenu, image=self.home_img)
        self.btn3.place(relx=0.5, rely=0.9, anchor="center")"""
        self.btn3 = tk.Button(self.frame_stats, text="RETOUR", bg="red",command=self.StatsToMenu)
        self.btn3.place(relx=0.5, rely=0.9, anchor="center")
       

    def MenuToGame(self):
        self.frame_intro.pack_forget()
        self.frame_game.pack()

    def MenuToStats(self):
        self.frame_intro.pack_forget()
        self.frame_stats.pack() 

    def GameToMenu(self):
        self.frame_game.pack_forget()
        self.frame_intro.pack()

    def StatsToMenu(self):
        self.frame_stats.pack_forget()
        self.frame_intro.pack()
    
    def startTogame_desert(self):
    
        pass
    def startTogame_campagne(self):
        pass
    
    def startTogame_ville(self):
        pass
    
    def quit_game(self):
    # Code pour quitter le jeu et fermer la fenêtre
        pass
   
if __name__ == "__main__":
    root = App()
    root.mainloop()