tkinter Checkbutton aktivität vorher auslesen

Fragen zu Tkinter.
Antworten
JOnybery
User
Beiträge: 8
Registriert: Dienstag 31. Juli 2018, 12:31

Hallo,
ich hoffe ihr könnt mir helfen. Gibt es eine möglichkeit, bei tkinter, beim Start zu kontrollieren ob ein Checkbutton beim letzten mal gedrückt wurde und somit aktiviert wurde?
klappt dieses nur damit einen Wert in eine Datei zu speichern?
Benutzeravatar
sparrow
User
Beiträge: 4198
Registriert: Freitag 17. April 2009, 10:28

Um einen Status in einem Programm zu setzen, der auf einer vorherigen Ausführung des Programms basiert, musst du diesen Wert natürlich permanent speichern.
Das Speichern in einer Datei ist wohl die gängigste Methode.
JOnybery
User
Beiträge: 8
Registriert: Dienstag 31. Juli 2018, 12:31

danke erstmal für die schnelle Antwort.
das speichern in einer Datei hab ich schon doch wie kann ich vorher auslesen wie der Wert ist?
Sirius3
User
Beiträge: 17759
Registriert: Sonntag 21. Oktober 2012, 17:20

Du weißt nicht, wie Du die Datei, die Du geschrieben hast, wieder lesen kannst?

Zeig doch mal den Code, den Du versucht hast.
JOnybery
User
Beiträge: 8
Registriert: Dienstag 31. Juli 2018, 12:31

Sirius3 hat geschrieben: Montag 6. Mai 2019, 11:04 Du weißt nicht, wie Du die Datei, die Du geschrieben hast, wieder lesen kannst?
doch das weiß ich mir fehlt nur die Möglichkeit den Button zu verändern

Code: Alles auswählen

#--------Biblioteken--------
from tkinter import*
import datetime
import locale

#-----------Definitionen---------------
#Knöpfe
def anAus_1():
    lab_1["text"] = var_1.get()
    with open("anAus_1.txt", "w") as fh:
        fh.write(lab_1["text"])
    return

#-----------Fenster--------------
root = Tk()
root.title("Garten Bewässerung")


knopfframe = Frame(root)
knopfframe.grid(column=0,row=0, sticky=(N,W) )

zeitframe = Frame(root)
zeitframe.grid(row=0, column=1, sticky=(N,E))

zsf = Frame (root)
zsf.grid(row=2, column=0,sticky=(N,W))



#------------Variablen------------
#Knöpfe
var_1 = StringVar()

#-------------Labels--------------
#Knöpfe
lab_titel=Label(knopfframe, text="Manuelle Steuerung")
lab_1 = Label(knopfframe, text="Aus")

#-------------Knöpfe-------------

c_1=Checkbutton(knopfframe, text="Relai 1", offvalue="Aus", onvalue="An", variable=var_1, command=anAus_1)
c_1.deselect()
    
    

#--------------packen------------------

c_1.grid(row=1, column=0)


lab_titel.grid(row=0, column=0)
lab_1.grid(row=2, column=0)

root.mainloop()
Benutzeravatar
sparrow
User
Beiträge: 4198
Registriert: Freitag 17. April 2009, 10:28

Du _tust_ doch schon etwas mit dem Checkbutton.
Was meinst du denn, was .deselect() tut?
JOnybery
User
Beiträge: 8
Registriert: Dienstag 31. Juli 2018, 12:31

ja das ist richtig das versteh ich auch alles meine frage ist nur wenn ich das Programm jetzt einmal ausführe und dann den Checkbutton auswähle möchte ich das er auch noch aktiv ist wenn ich das Programm das nächste mal starte?
Sirius3
User
Beiträge: 17759
Registriert: Sonntag 21. Oktober 2012, 17:20

Also weißt Du doch nicht, wie Du die Datei wieder einlesen kannst, dann sonst würdest Du es ja schon machen: Datei lesen und den Inhalt auf "An" prüfen und den Checkbutton entsprechend setzten.

Die Kommentare mit den --- sind eigentlich überflüssig, weil das jeder auch so lesen kann, was da passiert. Zumal wenn immer danach etwas von Knöpfen steht, ist das sehr verwirrend, wenn das dann gar nichts mit Knöpfen zu tun hat.

Gewöhn Dir gleich wieder ab, Variablen mit _1 zu versehen, das hat keinen Mehrwert. Variablen sollten aussagekräftig sein.
Eine Funktion sollte alles, was sie braucht über ihre Argumente bekommen, das tut `anAus_1` nicht, da fehlt lab_1 und var_1.

Sternchenimporte sind böse, warum steht hier im Forum bei jedem zweiten Beitrag zu tkinter.

Warum benutzt Du beim Label nicht var_1 um den Wert automatisch dem Checkbutton-Status anzupassen?
JOnybery
User
Beiträge: 8
Registriert: Dienstag 31. Juli 2018, 12:31

okay ich werde deine Tipps zurate nehmen und mich weiter ransetzen.
JOnybery
User
Beiträge: 8
Registriert: Dienstag 31. Juli 2018, 12:31

Sirius3 hat geschrieben: Montag 6. Mai 2019, 12:35 Warum benutzt Du beim Label nicht var_1 um den Wert automatisch dem Checkbutton-Status anzupassen?

wie würde das denn anders aussehen?
Antworten