Variable aus Checkbutton übergeben

Fragen zu Tkinter.
Antworten
The Spirit
User
Beiträge: 274
Registriert: Freitag 8. Juni 2007, 08:50
Wohnort: 84xxx Bereich
Kontaktdaten:

Donnerstag 30. August 2007, 12:09

HI.
Hab ne Funktion, die meinen Ornder nach allen dateien mit einer bestimmten Dateiendung durchsucht und mir dann anschließend für jede gefundene Datei eine Checkbutton macht mit dem Pfad inkl. Dateinamen als Text des Checkbuttons.
Jetzt bekomm ich es aber leider nicht hin, das wenn ich den Checkbutton markiere, also ein Häckchen setze, (checkbutton sind mit indicatoron=1 versehen), das er den text des checkbuttons als variable zurückgibt.
Jemand nen Tipp?
Thx
schlangenbeschwörer
User
Beiträge: 419
Registriert: Sonntag 3. September 2006, 15:11
Wohnort: in den weiten von NRW
Kontaktdaten:

Donnerstag 30. August 2007, 14:05

Du erhälst ja auch den "onvalue"-Wert, und nicht den Text. Erzeuge die Checkbuttons in etwa so:

Code: Alles auswählen

#...
pathname = "C:/deinpath/mit/unterverzeichnissen/und/datei.xy"
c = tk.Checkbutton(text=pathname, onvalue=pathname, indicatoron = ...)
#...
The Spirit
User
Beiträge: 274
Registriert: Freitag 8. Juni 2007, 08:50
Wohnort: 84xxx Bereich
Kontaktdaten:

Donnerstag 30. August 2007, 14:49

muss ich den onvalue dann mit

Code: Alles auswählen

onvalue.get() 
oder mit

Code: Alles auswählen

variable.get()
holen?
aber da es ein string ist, dürfte es mit

Code: Alles auswählen

.get() 
ja nicht gehen, oder?


edit:

desweiteren rufe ich das ganze in einer funktion auf. wie bekomme ich dann den wert aus der funktion "raus" (falls ich mal das onvalue bekomme ;o).
das ganze wird über einen button gestartet und daher auch der funktionsaufruf
schlangenbeschwörer
User
Beiträge: 419
Registriert: Sonntag 3. September 2006, 15:11
Wohnort: in den weiten von NRW
Kontaktdaten:

Donnerstag 30. August 2007, 16:41

Es wäre unglaublich hilfreich, wenn du mal deinen Code posten würdest!
Hier mal ein Bsp.: (vermutlich das schlechteste was geht :lol: )

Code: Alles auswählen

import Tkinter as tk

def makeCBs():
    varlist = []
    for i in xrange(10):
        var = tk.StringVar()
        varlist.append(var)
        path = r"C:\example\spam\eggs\bacon\%i.xy"%i
        tk.Checkbutton(text=path, onvalue=path, variable = var).pack()
    return varlist

def ausgabe(varlist):
    for var in varlist:
        if var.get().replace("0", "") :
            print var.get()
    print
            
tk.Tk()
varlist = makeCBs()
tk.Button(text = "ausgabe", command = lambda: ausgabe(varlist)).pack()
tk.mainloop()
Antworten