OptionMenu liste ändern

Fragen zu Tkinter.
haggi
User
Beiträge: 42
Registriert: Mittwoch 27. Februar 2008, 10:18
Kontaktdaten:

OptionMenu liste ändern

Beitragvon haggi » Donnerstag 3. April 2008, 12:26

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?
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Beitragvon numerix » Donnerstag 3. April 2008, 14:35

haggi
User
Beiträge: 42
Registriert: Mittwoch 27. Februar 2008, 10:18
Kontaktdaten:

Beitragvon haggi » Donnerstag 3. April 2008, 14:41

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.
Peter Gerlach
User
Beiträge: 24
Registriert: Donnerstag 14. Februar 2008, 18:16

Beitragvon Peter Gerlach » Montag 7. April 2008, 20:32

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.
.
Zuletzt geändert von Peter Gerlach am Montag 7. April 2008, 21:09, insgesamt 1-mal geändert.
haggi
User
Beiträge: 42
Registriert: Mittwoch 27. Februar 2008, 10:18
Kontaktdaten:

Beitragvon haggi » Montag 7. April 2008, 22:39

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.

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder