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:
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()
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)
On dirait presque qu'il n'y a qu'un seul objet menuscond, partagé par les 4 ???

Qu'est-ce que j'ai raté ?