Seite 1 von 1
OptionMenu liste ändern
Verfasst: Donnerstag 3. April 2008, 12:26
von haggi
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?
Verfasst: Donnerstag 3. April 2008, 14:35
von numerix
Verfasst: Donnerstag 3. April 2008, 14:41
von haggi
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.
Verfasst: Montag 7. April 2008, 20:32
von Peter Gerlach
Versuch es doch mal so:
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()
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.
.
Verfasst: Montag 7. April 2008, 22:39
von haggi
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.