[Tkinter] Button, lambda et boucle : effet indesirable
Bonjour,
je n'arrive pas a avoir le comportement que je veux avec un "callback" de bouton.
voici l'exemple:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| import Tkinter as tk
root = tk.Tk()
def callback(txt):
print "--> callback: %s"%txt
aList = ["A", "B"]
for txt in aList:
button = tk.Button(root, text=txt)
button["command"] = lambda:callback(txt)
button.config(width=30, height=10)
button.pack()
root.mainloop() |
lorsque j'appuie sur un bouton (A ou B), j'obtiens le meme resultat :
or biensur, je voudrais que ce soit la lettre du bouton.
Comment faire pour que la fonction lambda ne soit pas liee a la variable temporaire "txt", mais a la valeur (a l'instance pour les cas plus complexes) de "txt" au moment de la creation de la fonction lambda ?
Quelqu'un pourrait-il m'eclairer ?
merci.