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.

Botão Tkinter Estado - DISABLED e 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.

Botão Tkinter State Switch - entre DISABLED e NORMAL

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

Artigo relacionado - Tkinter Button

  • Como mudar a cor do botão de Tkinter
  • Como unir vários comandos ao botão Tkinter