Re: Tkinter menu question--how to pass arguments
- From: kyosohma@xxxxxxxxx
- Date: 30 Mar 2007 13:23:43 -0700
On Mar 30, 2:32 pm, Kevin Walzer <k...@xxxxxxxxxxxxxxx> 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?
--
Kevin Walzer
Code by Kevinhttp://www.codebykevin.com
There are various ways to accomplish this. The 2 most popular that I
am aware of are using a helper function or lambda.
using a lambda:
command=(lambda:self.authorizeCommand(self.scanPackages))
using a handler (i.e. indirection layer):
def func():
self.authorizeCommand(self.scanPackages)
self.finkmenu.add_command(label='Update List of
Packages',command=func)
Both of these are talked about in detail in "Programming Python 3rd
Ed" by Lutz. I found that helpful for me. Of course, I decided to stop
using Tkinter and switched to wxPython. Hope this gets you going
though.
Mike
.
- References:
- Tkinter menu question--how to pass arguments
- From: Kevin Walzer
- Tkinter menu question--how to pass arguments
- Prev by Date: Re: Tkinter menu question--how to pass arguments
- Next by Date: Re: Object Oriented Database with interface for Pyhton
- Previous by thread: Re: Tkinter menu question--how to pass arguments
- Next by thread: newb: lxml objectify
- Index(es):
Relevant Pages
|