Wo speichert Tkinter Status der Menubutton Items ?

Fragen zu Tkinter.
Benutzeravatar
snakeseven
User
Beiträge: 405
Registriert: Freitag 7. Oktober 2005, 14:37
Wohnort: Berlin
Kontaktdaten:

Wo speichert Tkinter Status der Menubutton Items ?

Beitragvon snakeseven » Freitag 23. November 2007, 13:36

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
Benutzeravatar
HWK
User
Beiträge: 1295
Registriert: Mittwoch 7. Juni 2006, 20:44

Beitragvon HWK » Freitag 23. November 2007, 14:15

Benutzeravatar
snakeseven
User
Beiträge: 405
Registriert: Freitag 7. Oktober 2005, 14:37
Wohnort: Berlin
Kontaktdaten:

Beitragvon snakeseven » Samstag 24. November 2007, 08:00

Hi HWK,
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()
Benutzeravatar
snakeseven
User
Beiträge: 405
Registriert: Freitag 7. Oktober 2005, 14:37
Wohnort: Berlin
Kontaktdaten:

Beitragvon snakeseven » Samstag 24. November 2007, 08:42

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()
BlackJack

Beitragvon BlackJack » Samstag 24. November 2007, 09:43

Ein paar einfache Veränderungen.

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()


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.
Benutzeravatar
snakeseven
User
Beiträge: 405
Registriert: Freitag 7. Oktober 2005, 14:37
Wohnort: Berlin
Kontaktdaten:

Beitragvon snakeseven » Samstag 24. November 2007, 10:29

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

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder