2016-12-18 59 views
0

正在做一个包含选项菜单的GUI我已经定义了以下菜单以从列表中选择选项,但是我想让每个选项都调用一个不同的函数,但我无法弄清楚如何去做。Tkinter OptionMenu,如何在每个选项上调用diffrent func

options = ["Modem ID: 20", 
       "Modem ID: 30", 
       "Modem ID: 40", 
       "Modem ID: 50"] 

    selected_Option 
    selected_Option = tk.StringVar(self) 
    selected_Option.set(options[0]) 
    drop_Menu =apply(OptionMenu, (self, selected_Option) + tuple(options)) 
    drop_Menu.place(relx=.809, y=5) 

回答

0

请检查this。选项菜单不调用函数,而是将值存储在现有的Tkinter变量中。这意味着你需要偶尔检查这个变量或者让gui的某些部分(如按钮)调用一个作用于它的函数。

如果你想要一个调用函数的菜单,那么这是一个regular menu

此处添加每个选项的命令(取自上面的链接):

menubar = Menu(root) 
menubar.add_command(label="Hello!", command=hello) 
menubar.add_command(label="Quit!", command=root.quit) 

当然你的标签是“调制解调器:ID”#”

0

可以使用.trace(..)功能上StringVar到监测值的变化,然后你根据所选择的选项想要的:

def onOptionChanged(*args): 
    modem_id = int(selected_Option.get().split(':')[1]) 
    if modem_id == 10: 
     # do something 
    elif modem_id == 20: 
     # do other stuff 
    ... 

... 
selected_Option = StringVar() 
selected_Option.trace('w', onOptionChanged) 
... 
相关问题