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.
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.
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
.
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 Facebook