Comment changer l'état du bouton Tkinter

Tkinter Button a deux états,

  • NORMAL - Le bouton peut être cliqué par l’utilisateur
  • DISABLE - Le bouton n’est pas cliquable
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()

Le bouton de gauche est désactivé (grisé) et le bouton de droite est normal.

États du bouton Tkinter - DISABLED et NORMAL

Les états peuvent être modifiés par la méthode de type dictionnaire ou par la méthode de type configuration.

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()

En cliquant sur bouton2, il appelle la fonction switchButtonState pour faire passer l’état du bouton1deDISABLED à NORMAL, ou vice versa.

Tkinter ButtonState Switch - entre DISABLED et NORMAL

state est l’option du widget Tkinter Button. Toutes les options du widget Button sont les keys de Button comme un dictionnaire.

def switchButtonState():
    if (button1['state'] == tk.NORMAL):
        button1['state'] = tk.DISABLED
    else:
        button1['state'] = tk.NORMAL

state est mis à jour en changeant la valeur de state dans le dictionnaire de Button.

state peut aussi être modifié en utilisant la méthode config de l’objet Button. Par conséquent, la fonction switchButtonState() pourrait aussi être implémentée comme ci-dessous,

def switchButtonState():
    if (button1['state'] == tk.NORMAL):
        button1.config(state=tk.DISABLED)
    else:
        button1.config(state=tk.NORMAL)

Même les chaînes normal et disabled pourraient être simplement utilisées plutôt que tk.NORMAL et tk.DISABLED.

Article connexe - Tkinter Button

  • Comment transmettre des arguments à la commande du bouton Tkinter
  • Comment fermer une fenêtre Tkinter avec un bouton
  • Comment créer une nouvelle fenêtre en cliquant sur un bouton dans Tkinter
  • Comment lier plusieurs commandes au bouton Tkinter
  • comments powered by Disqus