Bonjour à tous,

Je lutte sur un exercice que je pensais pouvoir faire seul, mais non, d'où ma présence. Je m'explique :

Je dois créer un aquarium, avec des poissons de différentes couleurs qui sont censés avancer. Avec :

-un bouton "Quitter" qui détruit la fenêtre,
-un bouton "Choix Couleur" qui est un menu déroulant qui permet de choisir parmi une des couleurs de l'aquarium, et de la sélectionner,
-et un bouton "Pêcheur" qui supprime le poisson dont la couleur a été choisie dans le menu "Choix Couleur".

Je dispose par ailleurs d'un module aquarium que je joins .

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
48
49
50
51
52
53
54
55
56
57
58
59
60
 
 
from Tkinter import *
from time import sleep
 
class Aquarium:
    """gestion d'un aquarium:
    aquarium -- fenetre Tk
    eau -- canvas pour dessiner les poissons
    poissons -- liste de poissons"""
    def __init__(self, largeur=300, hauteur=200):
        """creation de l'aquarium avec de l'eau"""
        self.aquarium = Tk()
        Button(self.aquarium, text="Quitter",
               command=self.aquarium.quit).pack(side=TOP)
        self.eau = Canvas(width=largeur,height=hauteur,background='lightblue')
        self.eau.pack()
        self.eau.create_line(0,hauteur*1/3,largeur,hauteur*1/3)
        self.poissons = []
 
    def demarrer(self):
        """demarre l'animation de l'aquarium"""
        self.aquarium.mainloop()
 
    def creer_poisson(self,x=10,y=30,couleur='yellow'):
        """creation d'un poisson dans l'aquarium"""
        self.poissons.append(Poisson(self.eau,x,y,couleur))
 
 
class Poisson:
    """un poisson qui se promene dans un aquarium
    poisson -- le dessin du poisson
    aquarium -- canvas dans lequel se trouve le poisson
    couleur -- couleur du poisson
    x -- abscisse du poisson
    y -- ordonnee du poisson"""
    def __init__(self, aquarium, x, y, couleur):
        """creation d'un poisson"""
        self.aquarium = aquarium
        self.x = x
        self.y = int(self.aquarium.cget('height'))-y
        self.couleur = couleur
        self.poisson = aquarium.create_oval(self.x, self.y,
                                            self.x+15, self.y+10, fill=couleur)
 
    def avance(self, x=5, y=0):
        """deplacement relatif du poisson"""
        self.aquarium.move(self.poisson, x, y)
        self.aquarium.update()
 
 
if __name__ == "__main__":
    A = Aquarium()
    A.creer_poisson()
    A.creer_poisson(x=30,y=50, couleur='red')
    for i in range(10):
        sleep(.3)
        for poisson in A.poissons:
            poisson.avance()
    #A.demarrer()
Ci-joint mon code :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
 
 
from Tkinter import *
from aquarium import *
 
#creation de l aquarium
aquarium=Tk()
Button(aquarium,text="Quitter",command=aquarium.destroy).pack(side=TOP)
eau=Canvas(width=300,height=400,background='lightblue')
eau.pack()
eau.create_line(0,400*1/3,300,400*1/3)
poissons=[]
 
#creation de mes poissons
jaune=Poisson(eau,55,100,'yellow')
vert=Poisson(eau,75,135,'green')
 
#avancée de mes poissons (pas sur)
jaune.avance(65,150)
vert.avance(85,155)
 
#brouillon du menu choix_couleur
 
# Creation de la barre de menu:
menu1 = Menu(aquarium)
 
# Creation du menu Choix Couleur:
choix_col = Menu(menu1, tearoff=0)
menu1.add_cascade(label="Choix Couleur",menu=choix_col)
choix_col.add_command(label="Jaune") #command=jaune.select() ??
choix_col.add_command(label="Vert")#command=vert.select() (selectionne cette couleur...)
 
aquarium.config(menu=menu1)
Button(aquarium,text="Pecheur").pack(side=TOP)
aquarium.mainloop()
Pour le menu "Choix Couleur", que mettre dans le champ "command" pour choisir une couleur de poisson ??!
Pour le bouton pêcheur j'ai une vague idée(les poissons de couleurs choisies par Choix_col sont effacés) mais je vois pas comment faire Choix couleur..


Merci d'avance de vos réponses et du temps qu'il a fallu pour me lire .