Wie man den Status der Tkinter-Taste ändert

Jinku Hu 5 November 2020 7 Januar 2020
Wie man den Status der Tkinter-Taste ändert

Tkinter Button hat zwei Zustände,

  • NORMAL - Die Taste kann vom Benutzer angeklickt werden.
  • DISABLE - Die Schaltfläche ist nicht klickbar
try:
    import Tkinter as tk
except:
    import tkinter as tk
    

app = tk.Tk()
app.geometry("300x100")
button1 = tk.Button(app, text="Button 1",
                    state=tk.DISABLED)
button2 = tk.Button(app, text="EN/DISABLE Button 1")
button1.pack(side=tk.LEFT)
button2.pack(side=tk.RIGHT)
app.mainloop()

Die linke Taste ist deaktiviert (grau unterlegt) und die rechte Taste ist normal.

Zustände der Tkinter-Taste - DEAKTIVIERT und NORMAL

Die Zustände könnten im Dictionaryähnlichen Verfahren oder im konfigurations-ähnlichen Verfahren modifiziert werden.

try:
    import Tkinter as tk
except:
    import tkinter as tk
    
def switchButtonState():
    if (button1['state'] == tk.NORMAL):
        button1['state'] = tk.DISABLED
    else:
        button1['state'] = tk.NORMAL
        
app = tk.Tk()
app.geometry("300x100")
button1 = tk.Button(app, text="Python Button 1",
                    state=tk.DISABLED)
button2 = tk.Button(app, text="EN/DISABLE Button 1",
                    command = switchButtonState)
button1.pack(side=tk.LEFT)
button2.pack(side=tk.RIGHT)
app.mainloop()

Durch Anklicken von button2 wird die Funktion switchButtonState aufgerufen, um den Zustand von button1 von DISABLED auf NORMAL oder umgekehrt umzuschalten.

Tkinter Button-State Umschalten - zwischen DISABLED und NORMAL

state ist die Option des Tkinter Button Widgets. Alle Optionen im Button Widget sind die keys von Button als Dictionary.

def switchButtonState():
    if (button1['state'] == tk.NORMAL):
        button1['state'] = tk.DISABLED
    else:
        button1['state'] = tk.NORMAL

Der state wird durch Ändern des Wertes von state im Button-Dictionary aktualisiert.

Der Status kann auch durch die config Methode des Button Objektes verändert werden. Daher könnte die switchButtonState() Funktion auch wie unten beschrieben implementiert werden,

def switchButtonState():
    if (button1['state'] == tk.NORMAL):
        button1.config(state=tk.DISABLED)
    else:
        button1.config(state=tk.NORMAL)

Sogar die Zeichenketten normal und disabled konnten einfach verwendet werden, anstatt tk.NORMAL und tk.DISABLED.

Author: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn

Verwandter Artikel - Tkinter Button