Hallo,
wo speichert Tkinter den Status der Menubutton Items ? Ich möchte die selectierten Items als Settings abspeichern und sie wieder restoren können. Also, nach dem Laden der Settings sollen die entsprechenden Häkchen wieder gesetzt sein.
Grüße, Seven
Wo speichert Tkinter Status der Menubutton Items ?
-
- User
- Beiträge: 408
- Registriert: Freitag 7. Oktober 2005, 14:37
- Wohnort: Berlin
- Kontaktdaten:
-
- User
- Beiträge: 408
- Registriert: Freitag 7. Oktober 2005, 14:37
- Wohnort: Berlin
- Kontaktdaten:
Hi HWK,
das hat mir sehr weitergeholfen. Geht wirklich einfach.
Gruß, Seven
das hat mir sehr weitergeholfen. Geht wirklich einfach.
Gruß, Seven
Code: Alles auswählen
#!/usr/bin/env python
# -*- coding: iso-8859-1 -*-
from Tkinter import Tk,Menubutton,Menu,IntVar
root = Tk()
eins = IntVar()
zwei = IntVar()
def zeige_control_variablen():
print eins.get()," ",zwei.get()
#----------------------- Menubutton---------------------------
auswahl = Menubutton(text="Auswahl")
auswahl.menu = Menu(auswahl, tearoff=0)
auswahl["menu"] = auswahl.menu
auswahl.menu.add_checkbutton(label="1", variable=eins , command = zeige_control_variablen)
auswahl.menu.add_checkbutton(label="2", variable=zwei, command = zeige_control_variablen)
auswahl.pack()
root.mainloop()
-
- User
- Beiträge: 408
- Registriert: Freitag 7. Oktober 2005, 14:37
- Wohnort: Berlin
- Kontaktdaten:
Das geht auch mit einer Liste von Control Variablen. Allerdings erscheint mir meine Methode etwas umständlich. Bestimmt kann mir einer sagen, wie es besser geht!? Meine derzeitige Methode:
Code: Alles auswählen
#!/usr/bin/env python
# -*- coding: iso-8859-1 -*-
from Tkinter import Tk,Menubutton,Menu,IntVar
root = Tk()
eintraege = ["0","1","2","3"]
control_vars = []
for i in eintraege: control_vars.append(IntVar())
def zeige_control_variablen(sel):
for n in control_vars: print n.get(),
print
auswahl = Menubutton(text="Auswahl")
auswahl.menu = Menu(auswahl, tearoff=0)
auswahl["menu"] = auswahl.menu
index=0
for n in eintraege:
auswahl.menu.add_checkbutton(label=n, variable=control_vars[index], command = lambda obj=control_vars[index]: zeige_control_variablen(obj))
index += 1
auswahl.pack()
root.mainloop()
Ein paar einfache Veränderungen.
Das Argument von `zeige_control_variablen()` wurde nicht verwendet, also ist auch das ``lambda`` nicht nötig. Ist natürlich sehr unschön, dass das alles auf Modulebene steht, das Menü wäre besser in einer Klasse aufgehoben.
Code: Alles auswählen
from Tkinter import Tk, Menubutton, Menu, IntVar
root = Tk()
eintraege = ['0', '1', '2', '3']
control_vars = [IntVar() for dummy in eintraege]
def zeige_control_variablen():
print ' '.join(str(v.get()) for v in control_vars)
auswahl = Menubutton(text='Auswahl')
menu = Menu(auswahl, tearoff=0)
auswahl['menu'] = menu
for eintrag, control_var in zip(eintraege, control_vars):
menu.add_checkbutton(label=eintrag,
variable=control_var,
command=zeige_control_variablen)
auswahl.pack()
root.mainloop()
-
- User
- Beiträge: 408
- Registriert: Freitag 7. Oktober 2005, 14:37
- Wohnort: Berlin
- Kontaktdaten:
In der Anwendung, in der ich das verwende, hat die GUI eine eigene Klasse. Deine Verbesserungsvorschläge wurden gleich absorbiert. Gefallen mir! Die ZIP-Funktion muß ich allerdings erstmal verstehen. Werd schon mal Google anwerfen.
Gruß, Seven
Gruß, Seven