⇨ MENU ⇨ MODULES ⇨ tkinter ⇨ controles standards ⇨ Entry
Tutoriel de tkinter.Entry ( )
⇨ MENU ⇨ MODULES ⇨ tkinter ⇨ controles standards ⇨ Entry
Tutoriel de tkinter.Entry ( )
DESCRIPTION.
Créer un nouveau controle de type champ de saisie ou texte simple (widget : tkinter.Entry ( )).
SYNTAXE.
ENT_Saisie = tkinter.Entry ( parent , attribut1 = valeur , ... , attributn = valeur )
ENT_Saisie = ⇨ affectation de l'instance du controle [ optionnel ]
tkinter.Entry ( ) ⇨ création d'une instance de tkinter.Entry ( ) [ OBLIGATOIRE ]
parent ⇨ conteneur de l'instance de tkinter.Entry ( ) [ OBLIGATOIRE ]
attribut = valeur ⇨ attribut à modifier avec sa nouvelle valeur [ optionnel ]
REMARQUES.
Les champs de saisie permettent à l'utilisateur de rentrer des chaines de caractères pour interagir avec le programme, quand les choix possibles ne peuvent pas être prédéterminés, ou sont trop nombreux pour être proposés dans des controles de sélection tel que des listes défillantes, des échelles de sélection, des bouton cliquables, ...
Comme les valeurs entrées avec la méthode input ( ) de Python, celles retournées par les champs de saisies sont toujours de type str ( ), même si elles ne sont composées que de chiffres.
Les objets permanents de type tkinter.Entry ( ) sont identifiés dans le site par : ENT_.
Voir les conventions sur les variables utilisées dans ce site ...
CREATION D'UNE CHAMP DE SAISIE.
Les champs de saisie sont crées comme tous les autres controles de tkinter, grâce à leur constructeur de classe tkinter.Entry ( ) et leur premier attribut doit être l'identification de son conteneur, son parent. Il est prudent de définir, dès la création de la liste fixe à choix, une couleur de fond et ses dimensions.
import tkinter
TKI_Principal = tkinter.Tk ( )
tkinter.Entry ( TKI_Principal , bg = "lightyellow" , width = 15 ).pack ( padx = 5 , pady = 5 )
tkinter.Button ( TKI_Principal , text = "Quitter" , command = TKI_Principal.destroy ).pack ( )
TKI_Principal.mainloop ( )
FAIRE DEFILER UN CHAMP DE SAISIE EN LUI ASSOCIANT UN ASCENSEUR.
L'attribut width d'un objet créé avec la classe tkinter.Entry ( ), définit sa largeur, et donc la quantité de caractères qui pourront être visible. Cette quantité peut varier en fonction de la police utilisée, de sa taille et de son style. Si le contenu dans cet objet contient un grand nombre de caractères, certains d'entr-eux seront donc cachés.
Dans la plupart des cas, il sera possible de faire défiler le contenu, de droite à gauche, avec les touches d'édition flèches avance et retour. Mais il reste préférable d'associer un objet tkinter.Scrollbar ( ) aux champs de saisie pour les parcourir de façon précise, rapide et facile.
import tkinter
TKI_Principal = tkinter.Tk ( )
TKV_Saisie = tkinter.StringVar ( )
BUT_Quitter = tkinter.Button ( TKI_Principal , text = "Quitter" , command = TKI_Principal.destroy )
BAR_Horizontal = tkinter.Scrollbar ( TKI_Principal , orient = "horizontal" )
ENT_Saisie = tkinter.Entry ( TKI_Principal , textvariable = TKV_Saisie )
ENT_Saisie.pack ( fill = "both" )
BAR_Horizontal.pack ( fill = "both" )
BUT_Quitter.pack ( fill = "both" )
ENT_Saisie [ "xscrollcommand" ] = BAR_Horizontal.set
BAR_Horizontal [ "command" ] = ENT_Saisie.xview
TKV_Saisie.set ( "Python est puissant et facile à apprendre." )
TKI_Principal.mainloop ( )
CONTROLE DE VALIDITÉ DE LA SAISIE.
Bien souvent, les valeurs passées au programme par l'intermédiaire d'un champs de saisie doivent être à un certain format ou dans une plage définie. les controles créés avec la classe tkinter.Entry ( ) permettent d'appeler une fonction pour controler et valider chaque modification du contenu, afin de s'assurer que le programme pourra traiter convenablement les données fournies par l'utilisateur, grâce à ses attributs validate, validatecommand et invalidcommand.
1. Définir une fonction de controle et de validation, grace à la instruction def comme d'habitude. Cette fonction pourra effectuer des traitements à la volée, en fonction du contenu saisie, mais doit avoir comme but principal de retourner True si le contenu du champ est valide, en regard des attentes de script, ou False dans le cas contraire. Si False est retourné, la modification du champ de saisie ne sera pas autorisée. Si la fonction de validation ne retourne ni True ni False, une exception sera levée par Python.
2. Construire un emballage Tcl autour de la fonction de validation en utilisant la méthode tkinter.register ( ).
3. Associer l'emballage Tcl au champ de saisie en affectant l'emballage Tcl à l'attribut validatecommand. et les arguments à passer à la fonction de validation, qui devra prévoir dans sa définition de la recevoir. Les arguments possible sont
- "%d", le Code d'action ;
- 0, tentative de suppression ;
- 1, pour une tentative d'insertion ;
- -1, modification du focus ou de la variable associée à textvariable du champs de saisie ;
- "%i", l'utilisateur tente de supprimer ou d'insérer du texte ;
- "%P", la valeur qu'aurais pris le champ de saisie si la modification avez réussie ;
- "%s", la valeur du champs de saisie avant la modification ;
- "%S", la valeur du texte inséré ou supprimé, si l'appel et du à cette modification ;
- "%v", l'événement surveillé par de l'attribut validate ;
- %V", la circonstance de l'appel si la variable de controle liée au champ de saisie a été modifié ;
- "%W", identification du champs de saisie.
4. Précisez l'événement qui déclenchera l'appel de la fonction de validation grace à l'attribut validate du champ de saisie. Les événements possibles sont :
- "all", tous les événement ci dessous ;
- "focus", le champ de saisie à le focus ;
- "focusin", le champ de saisie obtient le focus ;
- "focusout", le champ de saisie perd le focus;
- "key", une touche du clavier a été enfoncé ;
- "none", annule la surveillance de la saisie.
Si la fonction de validation retourne la valeur False, c'est à dire si la modification du champs de saisie ne correspond pas aux critères requis par le code, une fonction de rappel peut être invoquée, automatiquement, en l'associant à l'attribut invalidcommand. Cette fonction pourra par exemple : donner un modèle de saisie correcte, une recommandation, modifier la valeur de la variable de controle associé à textvariable, afficher un message dans une fenêtre surgissant, remplacer le contenu du champ de saisie par une valeur par défaut pour la suite de traitement, ignorer la saisie, ...
Voir la méthode tkinter.register ( ) et les attributs validate, validatecommand et invalidcommand. des champs de saisie pour plus de détails.
EXEMPLE.
import tkinter
def FNC_Test ( Q ) :
if Q.isdigit ( ) :
LAB_Reponce [ "text" ] = f"Moitié = { int ( Q ) / 2 }\nDouble = { int ( Q ) * 2 }\nCarré = { int ( Q ) ** 2 }"
return True
else :
return False
def FNC_Message ( ) :
LAB_Reponce [ "text" ] = "ATTENTION !\nMauvaise\nsaisie !"
TKI_Principal = tkinter.Tk ( )
REG_Valide = TKI_Principal.register ( FNC_Test )
BUT_Quitter = tkinter.Button ( TKI_Principal , text = "Quitter" , command = TKI_Principal.destroy )
ENT_Texte = tkinter.Entry ( TKI_Principal , validate = "key" , validatecommand = ( REG_Valide , "%P" ) , invalidcommand = FNC_Message )
LAB_Reponce = tkinter.Label ( TKI_Principal , text = "Entrez un\nnombre\nentier" )
LAB_Reponce.pack ( )
ENT_Texte.pack ( )
BUT_Quitter.pack ( )
ENT_Texte.focus_force ( )
TKI_Principal.mainloop ( )
Votre aide est précieuse pour améliorer ce site, alors n'hésitez pas à faire part de