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