Tkinter menu question--how to pass arguments

Dave Opstad dave.opstad at monotypeimaging.com
Fri Mar 30 16:13:36 EDT 2007


In article <85c10$460d65c8$4275d90a$19337 at FUSE.NET>,
 Kevin Walzer <kw at codebykevin.com> wrote:

> I'm having difficulty structuring a Tkinter menu entry. Here is the 
> command in question:
> 
> self.finkmenu.add_command(label='Update List of Packages', 
> command=self.authorizeCommand(self.scanPackages))
> 
> When I start my program, it crashes because it's trying to run the 
> command self.authorizeCommand. The reason I'm structuring it in this 
> fashion is that this command takes another command as an argument--in 
> this case, self.ScanPackages.
> 
> The basic structure of the program is that the self.authorizeCommand 
> function pops up a dialog box for a password; it then feeds the password 
> to the function that it takes as an argument, i.e. self.scanPackages.
> 
> I tried setting up the menu entry without the additional parameter, i.e. 
> command=self.authorizeCommand, but then when I try to run the command 
> from the menu, it complains there are not enough arguments. 
> Unsurprising, since self.authorizeCommand takes another function name as 
> an argument.
> 
> How can I structure the menu item to reflect the correct number of 
> arguments without it trying to execute the command?

If self.scanPackages exists as an attribute of self, why do you need to 
pass it in? If your command is just self.authorizeCommand, and that 
method makes use of self.scanPackages when it runs, then it all should 
work without your having to specify it here.

Dave



More information about the Python-list mailing list