Tkinter menu question--how to pass arguments

Kevin Walzer kw at codebykevin.com
Fri Mar 30 16:39:14 EDT 2007


Dave Opstad wrote:
> 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
self.AuthorizeCommand is a generic  dialog to feed a password to several 
different commands. So, the specific function needs to be specified as a 
parameter.

-- 
Kevin Walzer
Code by Kevin
http://www.codebykevin.com



More information about the Python-list mailing list