[Tkinter-discuss] Problems with lambda functions in callbacks

Stewart Midwinter stewart at midwinter.ca
Thu Feb 15 18:26:20 CET 2007


Dídac, aquest és un problem molt interessant.

Your code doesn't work because you didn't pass in a reference to i in your
lambda.  The correct code appears below. BTW, if you set up your application
with classes and methods, you will need to pass in a reference to self in
the same way: self=self.

from Tkinter import *

root = Tk();

def cb(x):
   print x;

for i in range(5):
   b = Button(root,text=i,command=lambda i=i:cb(i));
   b.pack();

root.mainloop();


cheers
Stewart
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.python.org/pipermail/tkinter-discuss/attachments/20070215/04841033/attachment.htm 


More information about the Tkinter-discuss mailing list