Tkinter button not working as expected

vagrantbrad at vagrantbrad at
Fri Sep 22 21:32:39 CEST 2006

Thank you Fredrik.  It makes total sense now that you've explained it
this way.  I frustrated at my ignorance on the assignment issue :)

Fredrik Lundh wrote:
> vagrantbrad at wrote:
> > I've created a short test program that uses tkFileDialog.askdirectory
> > to help the user input a path into a tk entry widget.  The problem I'm
> > having is that when I run the code as listed below, the getPath
> > function is called when the program initially runs, not when the button
> > is pressed.
> the right side of an assignment is always evaluated before it is assigned, so
>     self.button["command"] = self.getPath(t)
> will call self.getPath(t) and then assign the return value to button["command"].
> quite obvious, if you think about it, right ?
> the easiest way to fix this is to add a local function that calls getPath, and
> use that as the button callback:
>     def callback():
>         self.getPath(t)
>     self.button["command"] = callback
> (if you want, you can inline the getPath code in the callback).
> </F>

More information about the Python-list mailing list