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
-
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.-
-
@Clementine1998Je n'ai pas compris de quelles lignes tu veux parler.
-
@FlaubertImport tkinter as tk, c'est un module qu'on importe?
-
@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.
-