Re: Tkinter menu question--how to pass arguments
- From: Kevin Walzer <kw@xxxxxxxxxxxxxxx>
- Date: Fri, 30 Mar 2007 16:37:29 -0400
kyosohma@xxxxxxxxx wrote:
On Mar 30, 2:32 pm, Kevin Walzer <k...@xxxxxxxxxxxxxxx> wrote:lambda does the trick--thanks. I have the Lutz book but overlooked that part.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
--
Kevin Walzer
Code by Kevin
http://www.codebykevin.com
.
- References:
- Tkinter menu question--how to pass arguments
- From: Kevin Walzer
- Re: Tkinter menu question--how to pass arguments
- From: kyosohma
- Tkinter menu question--how to pass arguments
- Prev by Date: newb: lxml objectify
- Next by Date: Re: Tkinter menu question--how to pass arguments
- Previous by thread: Re: Tkinter menu question--how to pass arguments
- Next by thread: Re: Tkinter menu question--how to pass arguments
- Index(es):
Relevant Pages
|