[Tkinter-discuss] Is this introspective?

Cameron Laird Cameron at phaseit.net
Fri Jul 4 03:54:40 CEST 2008


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 ...


More information about the Tkinter-discuss mailing list