2016-12-18 6 views
0

オプションメニューを含むGUIを実行しています。リストからオプションを取得するために以下のメニューを定義しましたが、私はそれを行う方法を理解できませんでした。Tkinter OptionMenu、各オプションで異なる関数を呼び出す方法

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

をあなたにStringVar.trace(..)機能を使用することができます値の変更を監視し、選択したオプションに基づいて必要な操作を行います。

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) 
... 
関連する問題