⇨ MENU ⇨ MODULES ⇨ tkinter ⇨ controles standards ⇨ Text
tkinter.Text ( ).search ( )
⇨ MENU ⇨ MODULES ⇨ tkinter ⇨ controles standards ⇨ Text
tkinter.Text ( ).search ( )
DESCRIPTION.
Recherche la position d'une chaine de caractères dans le contenu d'un éditeur de texte.
SYNTAXE.
Valeur = TXT_Editeur.search ( chaine , index , attribut1 = valeur , ... , attributn = valeur )
Valeur = ⇨ variable qui recevra la valeur [ optionnel ]
TXT_Editeur ⇨ instance quelconque de tkinter.Text ( ) [ OBLIGATOIRE ]
.search ( ) ⇨ appel de la méthode [ OBLIGATOIRE ]
chaine ⇨ index du premier élément inclus [ OBLIGATOIRE ]
index ⇨ index du dernier élément exclus [ OBLIGATOIRE ]
attribut = valeur ⇨ attribut à modifier avec sa nouvelle valeur [ OBLIGATOIRE ]
REMARQUES.
chaine est un str ( ) quelconque qui peut être une variable ou exprimé directement, dans ce cas la chaine de caractère doit être valide pour Python : entouré d'une paire, ou d'un triplet, de guillemets (") ou d'apostrophes (') elle-même pouvant être préfixée d'un f ou de r.
index est un str ( ) quelconque mais valide désignant un index dans un éditeur de texte. Un index valide a la forme : "paragraphe.place" ou un nom correspondant à une balise, une région, ou une position particulière.Voir la méthode tkinter.Text ( ).index ( ) pour plus d'informations sur les index.
Si chaine est trouvée, dans le contenu de l'éditeur de texte, la méthode tkinter.Text ( ).search ( ) retourne l'index du premier caractère de la correspondance et la recherche s'arrête. Pour rechercher, et éventuellement trouver, d'autres correspondances, il faut faire des appels successifs de la méthode tkinter.Text ( ).search ( ) en indiquant index, en le déplaçant d'un élément de la valeur retournée par l'appel précédant.
Par défaut, la recherche se fait depuis index jusqu'à la fin du contenu de l'éditeur de texte, puis elle reprend depuis le début du contenu et stoppe à l'élément avant index, ayant exploré ainsi tous le contenu. l'utilisation de l'attribut stopindex = fin permet de stopper la recherche dès que la portion du contenu allant de index à fin a été examiné.
Il est aussi possible d'inverser le sens de la recherche avec backwards = True. Dans ce cas, la recherche remonte de index au début de contenu, puis repart depuis la fin du contenu jusqu'à l'élément après index, sauf si a recherche est arrêtée par stopindex = fin.
chaine peut se trouver sur une ou plusieurs lignes, si une parties de chaine se trouve sur les lignes suivantes. Si la recherche est faite grâce à une expression régulière, une autre fonction peut utiliser les différentes fonctionnalités de correspondance de nouvelles lignes telles que : $ pour correspondre à la fin d'une ligne ; ^ Pour faire correspondre le début d'une ligne et controler si le point (.) est autorisé à correspondre à une nouvelle ligne.
Voir la documentation officielle de tkinter.Text ( ) sur bogues connus et les limitations de la commande de recherche.
LISTE DES ATTRIBUTS DE RECHERCHE.
backwards = sens
Si backwards = True la recherche sera faite en remontant dans le contenu.
count = variable
Associée une variable type tkinter.IntVar ( ) à la rechercher et lui affecte la longueur chaine si elle trouvée et 0 sinon.
elide = mode
Si elide = True la recherche est faite aussi sur le texte caché (élidé). Par défaut, seul le texte affiché est analysé.
exact = mode
Si exact = True la recherche est faite sur un str ( ) et pas sur une expression régulière, c'est le mode par défaut.
forwards = sens
Si forwards = True la recherche sera faite en descendant dans le contenu, c'est le mode par défaut.
regexp = mode
Si regexp = True la recherche est faite sur une expression régulière et pas sur un str ( ).
nocase = case
Si nocase = True majuscule et minuscules sont équivalentes. Par défaut, la recherche tient compte de la case.
stopindex = index
Indique à quel index doit s'arrêter la recherche.
EXEMPLE.
import tkinter
def FNC_Rechercher ( ) :
if len ( ENT_Texte.get ( ) ) < 1 :
LAB_Retour [ "text" ] = "Tapez un texte à rechercher ⇩⇩⇩"
ENT_Texte.focus_force ( )
return
kmessage = "Il n'y a pas de correspondance."
kdebut = TXT_Editeur.search ( ENT_Texte.get ( ) , "insert" , nocase = True )
if kdebut != "" :
klongueur = len ( ENT_Texte.get ( ) )
kfin = TXT_Editeur.index ( f"{ kdebut } + { klongueur } chars" )
TXT_Editeur.tag_remove ( "sel" , "1.0" , "end" )
TXT_Editeur.tag_add ( "sel" , kdebut , kfin )
TXT_Editeur.mark_set ( "insert" , kfin )
TXT_Editeur.see ( kfin )
TXT_Editeur.focus_force ( )
kmessage = f"Correspondance de { kdebut } à { kfin } "
LAB_Retour [ "text" ] = kmessage
TKI_Principal = tkinter.Tk ( )
BUT_Quitter = tkinter.Button ( TKI_Principal , text = "Quitter" , command = TKI_Principal.destroy )
BUT_Rechercher = tkinter.Button ( TKI_Principal , text = "Chercher depuis le curseur" , command = FNC_Rechercher )
ENT_Texte = tkinter.Entry ( TKI_Principal )
LAB_Retour = tkinter.Label ( TKI_Principal )
TXT_Editeur = tkinter.Text ( TKI_Principal , width = 40 , height = 12 )
TXT_Editeur.pack ( )
LAB_Retour.pack ( fill = "both" )
ENT_Texte.pack ( fill = "both" )
BUT_Rechercher.pack ( fill = "both" )
BUT_Quitter.pack ( fill = "both" )
TXT_Editeur.insert ( "1.0" , """
LA PROGRAMMATION RECREATIVE.
Il y a de multiples raisons de vouloir réaliser ses propres applications, mais la meilleure de toutes est de le faire par passion, et d’en faire sa passion.
Comme toute passion, elle s'épanouit quand on la pratique avant tout de manière dilettante, même si certains d’entre nous ont aussi l’opportunité de la pratiquer professionnellement. L’amateur passionné, quelque soit son domaine de prédilection, reste est un privilégié. La programmation récréative est un loisir d’une richesse exceptionnelle.
La programmation n’est absolument pas une affaire de spécialistes. Contrairement à eux, l’amateur ose, encore, s’aventurer dans de périlleux défis. Il n’a aucune obligation de résultat, aucun délai à tenir, aucun compte à rendre, pas de budget à respecter.
Il s’applique, dans son activité distrayante, sans soucis de rentabilité, comme un chercheur en étude fondamentale. Il ne cherche pas la facilité pour s’épargner des déconvenues imprévues,il ne rebrousse pas chemin au premier écueil. Et même, s’il ne les recherche pas volontairement, les difficultés ne le rebutent pas, il leur fait face, les affronte, les surmonte, les résout.
Ses préoccupations, les énigmes qu’il cherche à résoudre, sont le plus souvent sans grand intérêt pratique mais, de délicates problématiques que l’on veut solutionner, de façon à la fois efficaces et esthétiques. Tous cela pour le seul plaisir de la découverte, de la création. Bien souvent, vous réinventerez la roue, mais c’est vous qui l’aurez réinventez,en toute liberté, en dehors des sempiternels standards érigés en vérité universelle.
Combien de subtiles et merveilleuses trouvailles, à jamais anonymes, dorment oubliées au creux d’une routine unique, élaborée un jour pluvieux, issues d'un cerveau, curieux et ingénieux, bouillonnant d'idées déroutantes et insolites.
Programmeur du dimanche, du samedi, des jours fériés,
programmez par plaisir et soyez en heureux.
""" )
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