2016-12-18 2 views
0

mache ich eine GUI, die Optionsmenü enthält Ich habe das folgende Menü definiert, um die Optionen aus einer Liste zu nehmen, jedoch möchte ich jede Option eine andere Funktion aufrufen, aber ich konnte nicht herausfinden, wie es geht.Tkinter OptionMenu, Wie diffrent func auf jeder Option aufgerufen wird

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) 

Antwort

0

Bitte überprüfen Sie this. Das Optionsmenü ruft keine Funktion auf, sondern speichert einen Wert in einer vorhandenen Tkinter-Variablen. Das bedeutet, dass Sie diese Variable gelegentlich überprüfen müssen oder andernfalls einen Teil der GUI (wie eine Schaltfläche) eine Funktion aufrufen müssen, die darauf reagiert.

Wenn Sie ein Menü möchten, das Funktionen aufruft, ist das ein regular menu.

Hier fügen Sie einen Befehl pro Option (von oben Link genommen):

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

Natürlich Ihre Etiketten "Modem: ID" sind. #“

0

Sie verwenden können .trace(..) Funktion auf StringVar Überwachen Sie die Änderung des Werts und führen Sie dann basierend auf der ausgewählten Option aus, was Sie möchten:

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) 
... 
Verwandte Themen