Python从模块中获取函数并在OptionMenu上显示它们

时间:2014-07-12 07:56:20

标签: python tkinter

你好我试图创建一个程序,它要求python模块,获取它的函数,将它们附加到列表中,并将列表值作为OptionMenu的选项。我有以下代码:

def fetch_module():
    global get_module
    global functionmodulename
    get_module = askopenfilename(title="get module", filetypes=[("Python source","*.py")])
    functionmodulename = inspect.getmodulename(get_function)
    getfunctions(sys.modules[get_module])
def fetch_function(module)
    global l
    l = []
    for key, value in module.__dict__.items():
        if type(value) is FunctionType:
            l.append(value)

if __name__ == "__main__":
    function_name = StringVar
    OptionMenu(function_name, l).pack()
    fetch_module()
    mainloop()

但是,如果我执行此操作," []"将显示为唯一选择。我能解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

您的代码中有几件事需要修复。首先,您需要创建Tkinter应用程序,让它称之为主。

现在您将StringVar类分配给变量function_name。这不起作用。您需要创建一个新的StringVar实例。

在OptionMenu中列出一些东西也很棘手。见:http://effbot.org/tkinterbook/optionmenu.htm

import Tkinter                                                                                                                   
# or depending on your python version: import tkinter                                                                            

if __name__ == "__main__":                                                                                                       
    master = Tkinter.Tk()                                                                                                        
    sv = Tkinter.StringVar(master)                                                                                               
    l = ['a','b','b','c']                                                                                                        
    apply( Tkinter.OptionMenu, (master, sv) + tuple(l)).pack()                                                                   
    Tkinter.mainloop()