bonjour tout le monde,
je suis Gilles, je viens ici pour la 1ère fois.
Je voudrais, pour mon GUI, créer un Menu cascadé. Un MenuButton, dont le 1er menu affiche 2 entrées (les catégories) et les menus de rang 2 affichent 2 choix possibles (en réalité, 16 catégories de 8 items chacune)
Voici mon code:
L'affiche est correct. Mais quelque soit le choix d'item que je fasse (4 possibilités), le callback reçoit toujours le label du dernier item de la dernière catégorie ("électrique" dans cet exemple)
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 from tkinter import * Categories = ("piano", "guitar" ) Instruments = ( "beau piano", "moins beau piano", "acoustique", "électrique" ) def MenuCmd ( arg ): popup.config(text = arg) return fenetre = Tk() popup = Menubutton( fenetre, text='choose...', width='20', borderwidth=2 ) menupopup = Menu(popup) for c, categorie in zip ( range(0,2), Categories ): menusecond = Menu ( menupopup ) for i in range(0,2): rang = i + 2*c menusecond.add_command( label=Instruments[rang], command=lambda: MenuCmd(Instruments[rang]) ) menupopup.add_cascade (label=categorie, menu=menusecond) popup.configure(menu=menupopup) popup.pack() fenetre.mainloop()
On dirait presque qu'il n'y a qu'un seul objet menuscond, partagé par les 4 ???
Qu'est-ce que j'ai raté ?
Partager