I want to make 5 buttons in a loop, and for each buttons bind a commend to print the index. In the following solution it always prints the same index.
My code like
Resolution of variables in lambdas is done when lambda is executed. At this time, for all buttons i=5. To rectify this issue do as follows:
make_button = Tkinter.Button(frame, text ="make!",
command= lambda i=i: makeId(i))
This creates i as a local variable in a lambda. This local variable will hold correct value of i from the loop. the local variable can have any name, not necessarily i
, e.g. command= lambda a=i: makeId(a))
.