Como mudar o estado do Botão Tkinter

Jinku Hu 25 junho 2020
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.

Autor: 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 Facebook

Artigo relacionado - Tkinter Button