Griser un Entry

Bonjour, j'aimerais que lorsque je clique sur le bouton, la case Entry se grise pour que je ne puisse plus modifier ce qu'il y à l'intérieur... Est-ce que c'est possible?

from tkinter import *

root = Tk()

def QCM():
#Griser l'Entry

Prenom = Entry(root)
Prenom.pack()
b=Button(root, text ="C'est parti !", command=QCM)
b.pack()

root.mainloop()

1 réponse

  1. Oui, c'est possible, entry a un paramètre state qui peut définir cela.

    Exemple simple utilisant lambda dans les commandes boutons de tkinter.

    import tkinter as tk

    root = tk.Tk()

    def modifier_etat_entree(objet_entry, etat):
    objet_entry.configure(state=etat) # Ou objet_entry['state'] = etat qui fait la même chose

    prenom = tk.Entry(root)
    prenom.pack()
    bouton_desactiver = tk.Button(root, text ="Désactiver", command=lambda p=prenom, etat=tk.DISABLED: modifier_etat_entree(p, etat))
    bouton_desactiver.pack()

    bouton_activer = tk.Button(root, text ="Activer", command=lambda p=prenom, etat=tk.NORMAL: modifier_etat_entree(p, etat))
    bouton_activer.pack()

    root.mainloop()


    Pour le fonctionnement de lambda, je t'invite à rechercher sur ton moteur de recherche préféré qui te renverra vers des explications détaillées.
    1. Merci beaucoup cela fonctionne. Pouvez-vous m'expliquer les deux premières lignes svp
    2. @FlaubertImport tkinter as tk, c'est un module qu'on importe?
    3. @Clémentine1998Oui, on importe tkinter sous le nom de tk.

      C'est simplement un alias, au lieu d'écrire tkinter.Truc, on écrira tk.Truc, tu peux mettre ce que tu veux comme nom de substitution.

      C'est uniquement pour raccourcir le nom à taper dans le code, c'est très utile pour les noms de modules à rallonges.