Arguments for button command via Tkinter?
Mike Meyer
mwm at mired.org
Mon Oct 31 11:45:02 EST 2005
More information about the Python-list mailing list
Mon Oct 31 11:45:02 EST 2005
- Previous message (by thread): Arguments for button command via Tkinter?
- Next message (by thread): Arguments for button command via Tkinter?
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
"dakman at gmail.com" <dakman at gmail.com> writes: > Recently, I have been needing to do this alot and I can never find a > way around it, the main reason I want to do this is because for example > in the application I am making right now, it creates a grid of buttons > in a loop and they all have the same purpose so they need to call the > same method, within this method they need to change the background > color of the button clicked, I've tried stuff like... > > button['command'] = lambda: self.fill(button) > > def fill(self, wid): > button['bg'] = '#ff0000' > > But that's no good, everytime it I do click a button the lambda method > I have setup keeps getting recreated so all of the button commands > point to the same lambda method, I have also tried appending them to an > array, and calling them from that. > > Anyone have any clue as of what to do? Thanks. People have pointed out how to do this with a class, but you can do it with lambdas as well. I suspect the problem you're having is that python is binding values at call time instead of at definition time, but it's hard to tell without more of your source code. If I'm right, one solution is to make the values you want bound at definition time optional arguments to the lambda, bound to the correct value then. So you'd do: button['command'] = lambda b = button: self.fill(b) The version you used will look up the name button when the lambda is invoked. My version will look it up when the lambda is defined. <mike -- Mike Meyer <mwm at mired.org> http://www.mired.org/home/mwm/ Independent WWW/Perforce/FreeBSD/Unix consultant, email for more information.
- Previous message (by thread): Arguments for button command via Tkinter?
- Next message (by thread): Arguments for button command via Tkinter?
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Python-list mailing list