Tkinter checkbutton aktivieren

  • Hallo zusammen,


    ich habe ein Problem mit einem checkbutton in einem Tkinter-Menu. Checkbuttons innerhalb eines Fenster kann man mit der Methode select() oder deselect() setzen und entfernen.


    Wie kann man innerhalb eines TKinter-Menus, bei der ich die Methode add_checkbutton verwende, den checkbutton aktivieren oder deaktivieren? Ich lese beim Start des Programms einen Wert aus einer Datei. In Abhängigkeit des Wertes soll der Haken gesetzt oder eben nicht gesetzt werden.


    Vielen Dank und einen schönen Sonntag.


    whitechristmas

  • Hallo Whitechrismas,


    da nutzest Du die Methode [font="Courier New"]config()[/font] und den Parameter[font="Courier New"] indicatoron[/font], den Du entsprechend setzest.
    Probiere auch mal [font="Courier New"]onvalue[/font] und [font="Courier New"]offvalue[/font] aus.



    [Quelle]



    Beste Grüße


    Andreas

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    • Icon-Tutorials (IDE: Geany) - GPIO-Library - µController-Programmierung in Icon! - ser. Devices - kein Support per PM / Konversation

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.

    Edited once, last by Andreas ().

  • Hallo Andreas,


    entschuldige bitte, ich bin blutiger Anfänger. Mein Code sieht so aus:


    Code
    einstellungen=Menu(master=master)
    menubar.add_cascade(label="Einstellungen", menu=einstellungen)
    tor = BooleanVar() 
    
    
    einstellungen.add_checkbutton(label="Tornachtabfrage", variable=tor)
    einstellungen.add_checkbutton(label="Pumpenautomatik")


    Ich weiß nicht wie ich den checkbutton im Menu ansprechen kann.


    Vielen Dank.


    whitechristmas

  • Hallo Whitechrismas,



    Hallo Andreas,


    entschuldige bitte, ich bin blutiger Anfänger. Mein Code sieht so aus:


    Entschuldige ebenso - ich habe zwar Anwendungen in > 15 Programmiersprachen gesschrieben - aber Python war nicht darunter und wird es auch nicht schaffen.




    Ich weiß nicht wie ich den checkbutton im Menu ansprechen kann.


    Du hast doch irgendwo in Deinem Code ein Menü angelegt. Dort wird Dir auch ein Rückgabewert geliefert. An diesen kannst Du die genannten Methoden anhängen oder Werte setzen.


    Ansatzweise machst Du das doch schon. Du musst die Methoden nur auf das richtige Objekt anwenden.


    Hast Du den Link durchgelesen, den ich Dir geschickt habe? Da steht doch eigentlich alles drin.


    Nur dass Du das nicht auf den Checkbutton sondern auf entsprchende Menüs anwenden musst.



    Beste Grüße


    Andreas

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    • Icon-Tutorials (IDE: Geany) - GPIO-Library - µController-Programmierung in Icon! - ser. Devices - kein Support per PM / Konversation

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.

  • Hallo Andreas,


    ich habe mir den Link angesehen, kann aber leider nicht viel damit anfangen.


    Der Code vom Menu sieht so aus.



    Mir ist nicht klar wie ich innerhalb des Menus genau den checkbutton ansprechen kann, der den Haken erhalten soll. Ich bekomme es nicht gebacken. Muss mir eine andere Lösung überlegen.


    Trotzdem vielen Dank und einen schönen Tag noch.


    whitechristmas

  • Hallo Whitechrismas,


    dann schau doch mal hier nach Deiner Lösung.


    Beste Grüße


    Andreas

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    • Icon-Tutorials (IDE: Geany) - GPIO-Library - µController-Programmierung in Icon! - ser. Devices - kein Support per PM / Konversation

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.

    Edited once, last by Andreas ().


  • Entschuldige ebenso - ich habe zwar Anwendungen in > 15 Programmiersprachen gesschrieben - aber Python war nicht darunter und wird es auch nicht schaffen.


    Dann entgeht dir aber was. Python gehört zu den am meisten verwendeten und unterstützten Sprachen - bei den angeblich 15 anderen die du schon genutzt hast werden mit Sicherheit weniger bekannte/genutzte dabei sein, insbesondere bzgl. Linux.
    Ich find's allerdings auch irgendwie komisch das Du mit diesem Satz auf "entschuldige ich bin anfänger" antwortest...



    Ich empfehle eine Google Suche nach: tkinter menu checkbutton activate


    Daraus geht hervor das es nichts mit 'indicatoron' zu tun hat, sondern mit 'variable':

    Quote


    variable=
    Associates a Tkinter variable to the button. When the button is pressed, the variable is toggled between offvalue and onvalue. Explicit changes to the variable are automatically reflected by the buttons. (variable/Variable)


    Beispiel:
    [code=php]
    from tkinter import *


    master = Tk()


    expand = IntVar()
    c = Checkbutton(master, text="Erweitern", variable=expand)
    c.pack()


    master.mainloop()
    [/php]


    Damit ist "Erweitert" nicht sofort ausgewählt. Setzt man aber nach IntVar() direkt den Wert auf 1 (was dem Standard "onvalue" entspricht) ändert sich das ganze:


    [code=php]
    from tkinter import *


    master = Tk()


    expand = IntVar()
    expand.set(1)
    c = Checkbutton(master, text="Erweitern", variable=expand)
    c.pack()


    master.mainloop()
    [/php]


    Würde man "onvalue" auf True und "offvalue" auf False stellen, müsste man hier mit BooleanVar() arbeiten und dementsprechend expand.set(True) verwenden.



    Hier besteht aber auch die Möglichkeit stattdessen "select()" anzuwenden, was im Prinzip das gleiche bewirkt, und dem entspricht was whitechristmas selbst bereits vermutete:


    [code=php]
    from tkinter import *


    master = Tk()


    expand = IntVar()
    c = Checkbutton(master, text="Erweitern", variable=expand)
    c.select()
    c.pack()


    master.mainloop()
    [/php]

  • Hallo Andreas, hallo meigrafd,


    der Lösungsvorschlag mit


    expand=IntVar()
    expand.set(1)


    funktioniert.


    War genau das was ich gesucht habe. Bin froh, dass ich keine andere Lösung suchen muss.


    Herzlichen Dank.


    whitechristmas