Problème avec OptionMenu défini à partir d'un autre OptionMenu
Bonjour,
j'ai réussi à définir la liste d'un OptionMenu o1 depuis un OptionMenu o, à partir d'un exemple trouvé sur le web. Mon problème est isolé dans l'exemple ci-dessous :
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
| # changer les listes d'un OptionMenu depuis un autre OptionMenu
from Tkinter import *
values = ["one","two","three"]
def change(x):
global o1, var1
# change options
print o['menu'].index(var.get())
m = o1.children['menu']
m.delete(0,END)
newvalues = "a b c d e f".split()
for val in newvalues:
m.add_command(label=val, command=lambda v=var1, l=val:v.set(l))
var1.set(newvalues[0])
def change1(x):
print "passe"
return
root = Tk()
var = StringVar()
var.set(values[0])
var1 = StringVar()
var1.set(values[0])
# set initial options
o = OptionMenu(root,var,*values, command=change)
o.pack()
o1 = OptionMenu(root,var1,*values, command=change1)
o1.pack()
root.mainloop() |
Quand je clique sur un des éléments de la liste de o, je change la liste disponible sous o1.
Mais quand je clique sur un des éléments de la nouvelle liste de o1, je ne passe pas dans le sous-programme change1().
Par contre, si au lancement du programme, je clique d'emblée sur un des éléments de o1, sans toucher à o, je passe bien dans change1().
Je voudrais bien entendu passer dans change1() dans le premier scénario aussi.
Merci pour votre aide.