That helps Wayne - and was what I was referring to when I posted that I thought I had figured it out. Thanks for your help.
Chris Hare ch...@labr.net http://www.labr.net On Nov 3, 2011, at 10:08 AM, Wayne Werner wrote: > On Thu, Nov 3, 2011 at 9:41 AM, Chris Hare <ch...@labr.net> wrote: > Thanks Peter. Actually, I have read a bunch of stuff and looked at example > code. The problem in this case is I am using a defined method - focus_set(), > which is part of Tkinter and isn't part of my code. since I am using it in > the manner in which I have seen other examples, I am confused about why it is > complaining about 2 arguments, when I am not passing any. > > Although, I think I know what the problem is now. > > The problem is that when you use .bind() Tkinter will pass an event into your > function. This event contains useful information such as the x,y position of > your mouse, the key that fired the event, and a few other items. Of course, > since focus_set() belongs to a class it will always pass 'self' as the first > parameter. > > So when you bind widget.focus_set, when the event loop handles say, > <Button-1>, it finds the function bound (focus_set), and Python passes self > and Tkinter passes the event - two parameters, even though you're passing > none. > > As has been touched on, the standard thing to do when you are binding an > event but you don't actually care about the event (like focus_set()), is to > use the lambda, which allows you to ignore the event argument: > > self.list.bind("<Button-1>", lambda _: self.login_userid.focus_set()) > > It's convention to use the _ variable name to tell other programmers that you > don't care about that value, and you're intentionally ignoring whatever gets > passed to that function. > > HTH, > Wayne
_______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: http://mail.python.org/mailman/listinfo/tutor