⇨ MENU ⇨ MODULES ⇨ tkinter ⇨ controles standards ⇨ Text
tkinter.Text ( ).index ( )
⇨ MENU ⇨ MODULES ⇨ tkinter ⇨ controles standards ⇨ Text
tkinter.Text ( ).index ( )
DESCRIPTION.
Retourne la valeur absolu, ou position réelle, dans le contenu d'un éditeur de texte d'un l'index relatif.
SYNTAXE.
Variable = TXT_Editeur.index ( index )
Variable = ⇨ variable qui recevra la valeur [ optionnel ]
TXT_Editeur ⇨ instance quelconque de tkinter.Text ( ) [ OBLIGATOIRE ]
.index ( ) ⇨ appel de la méthode [ OBLIGATOIRE ]
index ⇨ emplacement de l'insertion de l'image [ OBLIGATOIRE ]
REMARQUES.
index est un str ( ) quelconque mais valide désignant un emplacement dans un éditeur de texte. Un emplacement valide a la forme : "paragraphe.place" ou un nom correspondant à un raccourcit, une limite de région, une balise ou un élément inséré.
Dans les éditeurs de texte, créés avec la classe tkinter.Text ( ), chaque élément de base, tel que les caractères d'un texte, les images et les fenêtres d’insertion, mais aussi les balises, les régions et la sélection, se trouve à une certaine position dans le contenu. Cette position est l'index absolu de position de l'élément, ou simplement index.
Un index est exprimé par ses coordonnées dans le contenu, placées dans une chaîne de caractères, avec :
- son abscisse, qui indique le paragraphe, suite de caractères se terminant par un saut de ligne (\n) ;
- suivie par un point (.) ;
- puis son ordonnée, la place de l'élément dans son paragraphe ;
soit la forme : "paragraphe.élément" où paragraphe et élément sont deux int ( ). Par exemple : l'index "12.7" fait référence à l'élément placé en huitième position dans le douzième paragraphe.
Le premier paragraphe d'un éditeur de texte est à l'emplacement 1 alors que le premier caractère d'un paragraphe est à l'emplacement 0. Le premier caractère d'un éditeur de texte est donc à l'index "1.0".
Note : Dans un éditeur de texte, un paragraphe peut se situé sur une ligne unique, se prolongeant au delà du bord droit du controle, si wrap à la valeur "none" ou sur plusieurs lignes si l'attribut wrap à la valeur "char" ou "word". Evidemment, dans le second cas, le numéro de paragraphe ne change pas quelque soit la ligne du paragraphe sur laquelle se trouve le caractère.
En plus de cette forme, un index peut avoir un nom prédéfinit, nom raccourcit, correspondant à un index particulier, une balise personnalisée, les extrémités d'une région, la position d'une image ou d'une fenêtre d'insertion :
- "current" : index de l'élément le plus près du pointeur de la souris ;
- "insert" : index du curseur d'insertion ;
- "end" : index du dernier élément du contenu ;
- "sel.first" : index de l'élément situé juste avant la sélection ;
- "sel.last" : index de l'élément situé juste après la sélection ;
- "§.end" : index du dernier élément du paragraphe § (par exemple : "12.end") ;
- "@abscisse,ordonnee" : index de l'élément situé le plus près des coordonnées (en pixels) précisées (ex : "@928.47") ;
- "format.first" : index de l'élément situé juste avant la région avec le formatage format ;
- "format.last" : index de l'élément situé juste après la région avec le formatage format ;
- "balise" : index d'une balise ;
- "image" : index d'une image insérée nommée image ;
- "fenetre" : index d'une fenêtre d'insertion nommée fenetre.
format est le nom identifiant un formatage créée avec la méthode tkinter.Text ( ).tag_config ( ) ou tkinter.Text ( ).tag_add ( ).
balise est le nom identifiant une balise créée avec la méthode tkinter.Text ( ).mark_set ( ).
image est la valeur de l'attribut name identifiant une image créée avec la méthode tkinter.Text ( ).image_create ( ).
fenetre est l'identifiant d'une fenêtre d'insertion créée avec la méthode tkinter.Text ( ).window_create ( ).
Les index "sel.first" et "sel.last" lèvent une exception si aucune sélection n'est présente dans l'éditeur de texte.
L'indication d'un placement, par un index absolu de position, peut être relativisée à l'aide de suffixes de déplacement, en faisant attention à bien placer un espace entre les composants de la chaine de caractères :
- "absolu + n chars", déplace l'index vers la droite du nombre (n) précisé de colonnes,
par exemple : "insert + 7 chars" avance l'index à 7 éléments après le curseur d'insertion ;
- "absolu - n chars", déplace l'index vers la gauche du nombre (n) précisé de colonnes,
par exemple : "end - 4 chars" recule l'index à 4 éléments avant le dernier élément du contenu ;
- "absolu linestart", déplace l'index devant le premier élément du paragraphe où se trouve absolu,
par exemple : "2.23 linestart" place l'index devant le première élément du deuxième paragraphe ;
- "absolu lineend", déplace l'index après le dernier élément du paragraphe où se trouve absolu,
par exemple : "4.17 lineend" place l'index après le dernier élément du quatrième paragraphe ;
- "absolu + n lines", déplace l'index vers le bas du nombre (n) précisé de paragraphes,
par exemple : "current + 2 lines" place l'index de 2 paragraphe après celui étant sous le pointeur de la souris ;
- "absolu - n lines", déplace l'index vers le haut du nombre (n) précisé de paragraphes,
par exemple : "end - 8 lines" place l'index à 8 paragraphe avant le dernier paragraphe ;
- "absolu wordstart", déplace l'index devant le mot contenant l'index indiqué,
par exemple : "4.17 wordstart" place l'index devant le premier caractère du mot contenant le caractère à la position "4.17" .
Dans ce cas, un mot est composé d'une suite de lettres, de chiffres ou du caractère de soulignement (_)
ou d'un caractère unique si à index il n'y a aucune de ces combinaisons.
EXEMPLE.
import tkinter , tkinter.filedialog
def FNC_Index ( ) :
kmessage = f"index proche du pointeur : { TXT_Editeur.index ( 'current' ) }\n"
kmessage += f"index sous le curseur : { TXT_Editeur.index ( 'insert' ) }\n"
try :
kmessage += f"index début de sélection : { TXT_Editeur.index ( 'sel.first' ) }\n"
kmessage += f"index fin de sélection : { TXT_Editeur.index ( 'sel.last' ) }"
except :
kmessage += "Il n'y a pas de sélection."
LAB_Index [ "text" ] = kmessage
TKI_Principal.after ( 100 , FNC_Index )
TKI_Principal = tkinter.Tk ( )
BUT_Quitter = tkinter.Button ( TKI_Principal , text = "Quitter" , command = TKI_Principal.destroy )
LAB_Index = tkinter.Label ( TKI_Principal , relief = "groove" , bd = 3 , height = 5 )
TXT_Editeur = tkinter.Text ( TKI_Principal , wrap = "none" , width = 40 , height = 15 )
TXT_Editeur.pack ( )
LAB_Index.pack ( fill = "both" )
BUT_Quitter.pack ( fill = "both" )
TXT_Editeur.insert ( "1.0" , "Vous pouvez taper votre texte ici.\n" )
TXT_Editeur.insert ( "2.0" , "Le modifier et en sélectionner une partie.\n" )
TXT_Editeur.insert ( "3.0" , "Pour tester la méthode index ( ).\n" )
TXT_Editeur.focus_set ( )
FNC_Index ( )
TKI_Principal.mainloop ( )
Votre aide est précieuse pour améliorer ce site, alors n'hésitez pas à faire part de