Conception jeu de type Space Invader
Bonjour à tous (ou bonsoir),
Dans le cadre de mes études je dois programmer un jeu sous tkinter et étant débutant je peine un peu à quelques niveaux malgré mes recherches intensives de documentation et d'éventuels solutions à mon problème.
J'essaie de réaliser une interface qui se compose d'une frame et qui selon le choix sur le bouton auquel on appuie, la frame se detroy, on créée et affiche une nouvelle frame.
Schéma :
Nous somme sur la frame Menu -> appuyer sur le bouton jouer -> frameMenu.destroy() -> page_jeu = Jeu() (instantiation d'une class Jeu elle même enfant de la class Frame) -> page_jeu.pack()
Et mon problème est que j'ai besoin du paramètre master pour instancier une nouvelle frame, mes boutons font partie de la class Menu(Frame) et ont pour callback des méthodes.
Y a t-il une solution à ce problème ?
C'est assez complexe pour moi pardonnez si c'est un peu flou
La class Menu :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
| from tkinter import Frame,Button,Label,X
from Class.ClassJeu import Jeu
from Class.ClassInstruct import Instructions
from Class.ClassEquip import Equipements
class Menu(Frame):
def __init__(self):
super().__init__()
# INITIALISATION DES VARIABLES
# Créations des widgets
self.message = Label(self, text="SPACE INVADER")
self.message.pack(side="top", fill=X)
self.btn_jouer = Button(self, text="Jouer", command=self.call_play)
self.btn_jouer.pack()
self.btn_instruc = Button(self, text="Instruction", command=self.call_instruct)
self.btn_instruc.pack()
self.btn_equip = Button(self, text="Equipements", command=self.call_equipment)
self.btn_equip.pack()
self.btn_quitter = Button(self, text="Quitter",cursor="pirate", command=self.master.quit)
self.btn_quitter.pack()
# méthode d'appel de la page de jeu
def call_play(self):
self.destroy() # On détruit la frame en cour
page_jeu = Jeu() # et on créé la nouvelle
# méthode d'appel de la page d'instruction
def call_instruct(self):
self.destroy()
page_instruction = Instructions()
# méthode d'appel de la page d'équipement
def call_equipment(self):
self.destroy()
page_equipement = Equipements() |
Ps: J'ai découpé mon programme en plusieurs fichier (Un pour chaque class et un main)