Checkbutton - dynamisch erzeugt, default-Wert
Verfasst: Montag 11. September 2017, 15:02
Hallo zusammen,
ich möchte, dass der Benutzer wählen kann welche Produktkategorien angezeigt bzw. berücksichtigt werden. Um das zu erreichen, stelle ich mir ein Menü bestehend aus einem Checkbutton pro Kategorie vor. Die Status dieser Checkbuttons sollen auch nach Beenden des Programms erhalten bleiben - also gespeichert werden, damit sie bei Programmstart entsprechend vorbelegt werden. Da ich an anderer Stelle bereits mit JSON arbeite, bietet es sich an das hier auch zu verwenden, um eine Art Konfigurationsdatei zu erstellen, denke ich.
Es ist mir nicht so wichtig, dass die Kategorien direkt nach Klick auf den Checkbutton angezeigt bzw. nicht mehr angezeigt werden. Nach einem Neustart des Programms reicht vollkommen, da bestimmte Kategorien saisonbedingt eventuell wochenlang nicht gebraucht werden.
Die Checkbuttons sollen zudem auch noch dynamisch generiert werden, da eventuell mal eine Kategorie hinzukommen kann.
Gehen wir mal davon aus das Ganze würde schon funktionieren und hätte eine Konfigurationsdatei "settings.txt" erzeugt. Der Benutzer braucht derzeit also nur die Kategorien "Äpfel" und "Kartoffeln".
Der Inhalt meiner "settings.txt" lautet testweise:
Wie generiere ich jetzt das oben erwähnte Menü und setze den entsprechenden "Default"-Wert?
Mein Ansatz dazu:
Ich habe hier bewusst erstmal jeden Eintrag mit einer 1 versehen, um zu gucken, ob es überhaupt so geht. Allerdings bekommt so immer nur der letzte Checkbutton einen Haken. Wo liegt mein Fehler? In checkbuttons steht hinterher:
Vielen Dank für die Mühe im Voraus!
ich möchte, dass der Benutzer wählen kann welche Produktkategorien angezeigt bzw. berücksichtigt werden. Um das zu erreichen, stelle ich mir ein Menü bestehend aus einem Checkbutton pro Kategorie vor. Die Status dieser Checkbuttons sollen auch nach Beenden des Programms erhalten bleiben - also gespeichert werden, damit sie bei Programmstart entsprechend vorbelegt werden. Da ich an anderer Stelle bereits mit JSON arbeite, bietet es sich an das hier auch zu verwenden, um eine Art Konfigurationsdatei zu erstellen, denke ich.
Es ist mir nicht so wichtig, dass die Kategorien direkt nach Klick auf den Checkbutton angezeigt bzw. nicht mehr angezeigt werden. Nach einem Neustart des Programms reicht vollkommen, da bestimmte Kategorien saisonbedingt eventuell wochenlang nicht gebraucht werden.
Die Checkbuttons sollen zudem auch noch dynamisch generiert werden, da eventuell mal eine Kategorie hinzukommen kann.
Gehen wir mal davon aus das Ganze würde schon funktionieren und hätte eine Konfigurationsdatei "settings.txt" erzeugt. Der Benutzer braucht derzeit also nur die Kategorien "Äpfel" und "Kartoffeln".
Der Inhalt meiner "settings.txt" lautet testweise:
Code: Alles auswählen
{"categories":{"Äpfel": 1, "Birnen": 0, "Kartoffeln": 1}}
Mein Ansatz dazu:
Code: Alles auswählen
# Konfiguration lesen
file = open("settings.txt", "r")
settings = json.load(file)
file.close()
checkbuttons = {}
for category in settings["categories"]:
self.var = tk.IntVar()
checkbuttons[category] = self.var
checkbuttons[category].set(1)
show_category_menu.add_checkbutton(label=category, variable=checkbuttons[category])
Code: Alles auswählen
{'Äpfel': <tkinter.IntVar object at 0x03B69910>, 'Birnen': <tkinter.IntVar object at 0x03B69930>, 'Kartoffeln': <tkinter.IntVar object at 0x03B69970>}