Ich würde gerne die Liste in einem OptionMenu popup ändern.
Ich habe 2 OptionMenus. Wenn nun im 1. Menu ein Wert selektiert wird, dann soll sich die Liste im optionMenu nummer 2 ändern.
Geht das ohne weiteres?
OptionMenu liste ändern
Danke für den Link.
Aber leider scheint das nicht ganz das zu sein was ich benötige. Zumindest wenn ich das Beispiel korrekt verstanden habe.
Hier wird nur gezeugt wie ein OptionMenu erzeugt wird, nicht jedoch wie die Liste eines schon bestehenden Menus geändert werden kann.
Aber leider scheint das nicht ganz das zu sein was ich benötige. Zumindest wenn ich das Beispiel korrekt verstanden habe.
Hier wird nur gezeugt wie ein OptionMenu erzeugt wird, nicht jedoch wie die Liste eines schon bestehenden Menus geändert werden kann.
-
- User
- Beiträge: 24
- Registriert: Donnerstag 14. Februar 2008, 18:16
Versuch es doch mal so:
Das heißt, Du zerstörst das OptionMenü jedesmal und baust es neu hin, weil sich die Menueliste anders nicht ändern lässt. Das Widget steht hier in einem eigenen Frame, damit es der Packer bei der Neubildung nicht unten dran wirft.
.
Code: Alles auswählen
from Tkinter import *
class Test:
def __init__(self):
self.root = Tk()
self.zei = StringVar()
self.zei.set('0')
self.f1 = Frame(self.root)
self.f1.pack()
self.f2 = Frame(self.root)
self.f2.pack()
self.b1 = Button(self.f2, text = 'kurze Version', command = self.ab)
self.b1.pack()
self.b2 = Button(self.f2, text = 'lange Version', command = self.up)
self.b2.pack()
self.o1 = OptionMenu(self.f1, self.zei, '0', '1', '2', '3', '4')
self.o1.pack()
self.root.mainloop()
def ab(self):
self.o1.destroy()
self.o2 = OptionMenu(self.f1, self.zei, '0', '1')
self.o2.pack()
def up(self):
self.o2.destroy()
self.o1 = OptionMenu(self.f1, self.zei, '0', '1', '2', '3', '4')
self.o1.pack()
b = Test()
.
Code: Alles auswählen
Code: Alles auswählen
Zuletzt geändert von Peter Gerlach am Montag 7. April 2008, 21:09, insgesamt 1-mal geändert.
Danke.
So ähnlich habe ich es auch gelöst. Ist nur etwas nervig, weil ich meine widgets gerne mit place() platziere und ich dann erst die Daten auslesen muss um das wieder neu erzeugte widget an die gleiche Stelle zu packen. Funktionniert aber.
So ähnlich habe ich es auch gelöst. Ist nur etwas nervig, weil ich meine widgets gerne mit place() platziere und ich dann erst die Daten auslesen muss um das wieder neu erzeugte widget an die gleiche Stelle zu packen. Funktionniert aber.