Seite 1 von 1

multiple Checkbuttons erstellen und abfragen

Verfasst: Samstag 18. Juli 2020, 23:14
von Tobias74
Hallo Zusammen,
ich möchte über einen filedialog mehrere Dateien auswählen und danach in einem Frame mit einem Checkbutton ausgeben um Sie dann für weitere Aktionen auswählen zu können.
Das klappt auch ganz gut. Habe das Ergebnis aus dem Filedialog hier mal mit den 4 Beispielfiles im Tupel eingefügt.
Stehe irgendwie grade auf dem Schlauch wie ich bei der Erstellung der Checkbuttons über die Schleife am besten die Variablen definiere und zugreifen kann. Sorry für die wahrscheinlich triviale Fragen, aber ich komme grade nicht drauf.
Vielen Dank

Code: Alles auswählen

import tkinter as tk
root=tk.Tk()
i=1
var=tk.IntVar

filenames = ("file1","file2", "file3", "file4")

for file in filenames:
   box =tk.Checkbutton(root,text=file, variable=var)
   box.grid(row=i, column=0)
   i=i+1

root.mainloop

Re: multiple Checkbuttons erstellen und abfragen

Verfasst: Sonntag 19. Juli 2020, 05:41
von sparrow
Die Checkbox alleine nützt ja nichts. Du musst ja auch etwas mit dem File machen, also zum Beispiel deren Nsmen anzeigen. Sonst kann man den Bezug Checkbox zu Dateiname ja nicht nachvollziehen.

Wir verlassen nun den Bereich der trivialen GUI-Programmierung und betreten den wunderbaren Bereich der objektorientierten Programmierung, um uns Dinge über Zustände hinweg zu merken:
Dein Fenster ist eine Klasse. In der führst du eine Liste. Und mit jedem Einfügen auf dem Widget fügst du dort auch die Box hinzu. Oder vielleicht gleich einen Tuple mit Filename und Box. Darin merkst du dir also die Elemente.

Re: multiple Checkbuttons erstellen und abfragen

Verfasst: Sonntag 19. Juli 2020, 06:05
von Sirius3
Funktionen, Methoden oder Klassen sollte man auch aufrufen. IntVar oder mainloop zum Beispiel. Auch Code, den man im Forum postet, sollte sorgfältig geschrieben sein, denn sonst weiß der Leser nicht, ob das Schlamperei oder Unwissenheit ist. Eingerückt wird immer mit vier Leerzeichen pro Ebene, nicht drei. Wenn man einen Index braucht, benutzt man enumerate. filenames sollte eine Liste und kein Tupel sein. Aus filenames kommt plötzlich file, was etwas ganz anderes ist. Die Checkbuttons sammelt man in einer Liste.

Code: Alles auswählen

import tkinter as tk

def main():
    root = tk.Tk()
    filename_selection = tk.IntVar()
    filenames = ["file1","file2", "file3", "file4"]
    filenamecheckboxes = []
    for row, filename in enumerate(filenames, 1):
        box = tk.Checkbutton(root, text=filename, variable=filename_selection)
        box.grid(row=row, column=0)
        filenamecheckboxes.append(box)
    root.mainloop()

if __name__ = "__main__":    
    main()

Re: multiple Checkbuttons erstellen und abfragen

Verfasst: Sonntag 19. Juli 2020, 19:42
von Tobias74
perfekt, das hilft mir wirklich weiter. Vielen Dank