On 2008-07-03, at 19:54, Cameron Laird wrote:


On Thu, Jul 03, 2008 at 07:42:17PM -0600, Bob Greschke wrote:
                        .
                        .
                        .
#! /usr/bin/env python

def doSomething():
   return

def doSomethingElse():
   return

def canWeDoSomethingPopup():
   if 'doSomething() exists':
       Add-doSomething-call-to-the-popup()
   if 'doSomethingElse() exists':
       Add-doSomethingElse()-call-to-the-popup()
   return

mainloop()


What's the right way to find out if the function doSomething() is in
this program?  I want to make up popup context menus (and menubar
menus too, I guess) based on what functions are available in a given
program. doSomething() may be in one program, but not in another, and
I'd like the list of menu items to handle that automatically.

Should I use getargspec() from the inspect module and look for the
NameError exception, or just use something like "if doSomething:", or ?
                        .
                        .
                        .
This is more a question about Python than Tkinter.
While we might do well to move further discussion
to comp.lang.tcl (or its mailing-list equivalent),
I can provide the highlights here:

   if "doSomething" in globals():
        ...
or
   import types
if "doSomething" in globals() and type(doSomething) == types.FunctionType:
        ...
or
   import types
   if "doSomething" in globals() and \
                type(globals()["doSomething"]) == types.FunctionType:
        ...
or ...



Oh yeah, you're right. Oops. I just wasn't thinking. I'm trying to make menus that call functions that bring up toplevel frames. Does that count? ;) globals()! I forgot all about that.

Thanks!

Bob

_______________________________________________
Tkinter-discuss mailing list
Tkinter-discuss@python.org
http://mail.python.org/mailman/listinfo/tkinter-discuss

Reply via email to