Como mudar o estado do Botão Tkinter
Botão Tkinter tem dois estados,
- NORMAL’ - O botão pode ser clicado pelo usuário
- DISABLE’ - O botão não pode ser clicado
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()
O botão esquerdo está desactivado (cinzento para fora) e o botão direito está normal.

Os estados podem ser modificados no método do dicionário ou no método de configuração.
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()
Ao clicar em button2, ele chama a função switchButtonState para mudar o estado button1 de DISABLED para NORMAL, ou vice versa.

é a opção do widget Tkinter Button. Todas as opções no widget Button são as keys do Button como dicionário.
def switchButtonState():
if button1["state"] == tk.NORMAL:
button1["state"] = tk.DISABLED
else:
button1["state"] = tk.NORMAL
O state é atualizado alterando o valor do state no dicionário de Button.
O state também pode ser modificado utilizando o método config do objeto Button. Portanto, a função switchButtonState() também poderia ser implementada como abaixo,
def switchButtonState():
if button1["state"] == tk.NORMAL:
button1.config(state=tk.DISABLED)
else:
button1.config(state=tk.NORMAL)
Mesmo as strings normal e disabled poderiam ser simplesmente utilizadas em vez de tk.NORMAL e 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