2017-08-22 2 views
0

Ich kann nicht herausfinden, oder wie Sie ein tkinter OptionsMenu deaktivieren. Ich habe 3 Optionsmenü in meinem GUI und wollen, dass sie zu deaktivieren, wenn eine TasteSo deaktivieren Sie einen tkinter OptionMenu

self.menu = OptionMenu(self, var, *items) 
btn = Button(self, text="disable", command = self.disable) 
btn,pack() 

self.disable(self): 
    //Disable menu here... 

Gibt es eine Möglichkeit zu nennen, nur eine Funktion für OptionMenu gebaut geklickt wird, und deaktivieren Sie das? Oder muss ich jede Option im Menü deaktivieren? (Was ich auch nicht herausfinden)

BTW: Ich habe die menu.pack() für ein separates Topleve() Fenster verwendet, das erscheint, aber ich begann mit dem Netz() System in meinen Haupt-Tk-Fenstern aus, verwendet von menu.grid(row=0,column=0)

EDIT: So habe ich vergessen zu erwähnen, dass ich mehrere OptionMenus haben durch eine Konstruktor-Methode erzeugt werden. Das ist, was ich versucht zu tun und hat nicht funktioniert:

makeMenu(): 
    menu = OptionMenu(self, var, *items) 
    ....//whole bunch of menu settings 
    return menu 

menu1 = makeMenu() 
all_menus.append(menu) 

Jetzt ist der Grund, warum dies nicht der Fall nicht funktioniert, weil ich es nach der Erstellung musste anfügen. Ich weiß nicht, warum die Einstellungen nicht übernommen werden, aber was ich tun musste, ist: makeMenu(): menu = OptionMenu (selbst, var, * Artikel) .... // ganze Bündel von Menüeinstellungen return Menü

makeMenu(): 
    menu = OptionMenu(self, var, *items) 
    ....//whole bunch of menu settings 
    all_menus.append(menu) 

makeMenu() 

Und mit dieser Änderung kann ich diese Menüs später deaktivieren verwenden:

for menu in all_menus: 
    menu.config(state=DISABLED) 
+0

Mögliches Duplikat von [Wie deaktiviere ich alle Benutzereingabe-Widgets (Schaltflächen, Einträge ..) von einem übergeordneten Widget?] (Https://stackoverflow.com/questions/22382746/how-do-i-disable- all-the-user-input-widgets-buttons-entries-from-a-parent-wi) –

+0

Schließen. Aber das hat mit OptionMenu zu tun, die etwas anders funktionieren. Ich habe diese Frage für meine Eingabe verwendet. Es klappt! Aber leider nicht mit OptionMenus. Danke für die Köpfe hoch! –

+0

Ich habe es getestet und es funktioniert mit OptionMenus. Zugegeben, es gibt keinen optischen Hinweis, aber wenn Sie auf ein deaktiviertes OptionMenü klicken, passiert nichts. –

Antwort

2

Wie bei jedem anderen Widget verwenden Sie die configure Methode den Zustand gesetzt "deaktiviert":

self.menu.configure(state="disabled") 

Das obige funktioniert sowohl für die tkinter als auch für die ttk OptionMenu Widgets.

+0

Das funktioniert !! Danke! –

Verwandte Themen