Text - Éditeurs de texte
Un widget de type Text est une manière bien
plus générale de traiter un texte multiligne que celle qu’offre un widget étiquette (Label). Ce widget ressemble plus à un éditeur de
texte complet dans une fenêtre.
- Vous pouvez mélanger différentes fontes, couleurs de texte et couleurs d’arrière plan.
- Vous pouvez intercaler des images dans le texte. Une image est traitée comme un caractère unique. Voir
Les images.
- Un index est un entier qui sert à préciser une position entre deux caractères. Voir Les index.
- Un widget Text peut contenir des marqueurs
invisibles situés entre deux caractères. Voir Les
marques.
- Un widget Text vous permet de définir des
noms pour des portions de textes appelés tags. Vous pouvez modifier l’apparence de telles
portions de textes en utilisant ces tags, en modifiant sa fonte, sa couleur d’avant plan
ou d’arrière plan et d’autres options de présentation. Voir Les tags.
- Vous pouvez aussi lier des gestionnaire d’événement sur des portions de textes marqués (à
l’aide d’un tag). Voir Les événements: répondre aux actions de l’utilisateur..
- Vous pouvez même insérer une «fenêtre» dans le contenu qui peut contenir n’importe quel widget
de Tkinter - même un cadre qui en englobent plusieurs. Une fenêtre est aussi traitée comme un simple
caractère. Voir Les fenêtres.
Pour créer un widget Text comme enfant
d’une fenêtre ou d’un cadre parent:
-
class Text(parent,
option, ...)
-
Ce constructeur retourne le nouveau widget Text créé. Ses options incluent:
Paramètres: |
- autoseparators – Si l’option undo est
positionné, l’option autoseparators contrôle si des séparateurs sont
automatiquement ajoutés à la pile de l’historique de retour (undo) après
chaque insertion ou suppression (si autoseparators=True) ou non (si autoseparator=False). Pour une vue
d’ensemble du mécanisme d’historique, voir Gestion de l’historique.
- bg – (ou background) La couleur d’arrière
plan du widget. Voir Les
couleurs.
- bd – (ou borderwidth) L’épaisseur de la
bordure du widget. 2 pixels par défaut. Voir Les dimensions.
- cursor – Le pointeur de souris utilisée lorsque celle-ci est au
dessus du widget. Voir Le
pointeur de la souris.
- exportselection – Par défaut, le texte sélectionné à
l’intérieur du widget est exporté vers le presse-papier du sytème. Utilisez exportselection=0 pour supprimer ce
comportement.
- font – La fonte de caractères par défaut utilisées pour le texte
saisi dans le widget. Notez que vous pouvez utiliser plusieurs polices de caractères dans ce
widget en utilisant les tags pour modifier les propriétés de portions de texte.
Voir Les polices de
caractères.
- fg – (ou foreground) La couleur utilisée pour le
texte (et les bitmaps) dans le widget. Vous pouvez modifier la couleur pour des portions de
textes tagués; cette option fournie juste une couleur par défaut.
- height – La hauteur du widget en nombre de lignes (non en pixels!).
La mesure dépend de la fonte de caractère courante.
- highlightbackground – La couleur de la ligne de mise en valeur du
focus lorsque le widget ne l’a pas. Voir Le focus: réception des saisies clavier.
- highlightcolor – La couleur de la ligne de mise en valeur du focus
lorsque le widget l’obtient.
- highlightthickness – L’épaisseur de la ligne de mise en
valeur du focus. 1 pixel pas défaut. Utilisez highlightthickness=0 pour supprimer la mise en valeur du focus.
- insertbackground – La couleur du curseur d’insertion. 'black' par défaut.
- insertborderwidth – L’épaisseur de la bordure 3d autour du
curseur d’insertion. 0 par défaut.
- insertofftime – Cette option et la suivante contrôle le
clignotement du curseur d’insertion. la première est la durée en millisecondes de
disparition et la seconde sa durée d’apparition dans le clignotement. Les valeurs par
défaut sont respectivement 300 et 600.
- insertontime –
- insertwidth – La largeur du curseur d’insertion (sa hauteur
est déterminée par le plus haut élément de la ligne courante). 2 pixels par défaut.
- maxundo – Cette option sert à régler le nombre maximum
d’opérations mémorisées dans l’historique. Pour une vue d’ensemble du
mécanisme de gestion de l’historique, voir Gestion de l’historique. Utilisez la valeur -1 pour
préciser un nombre illimité d’opérations mémorisées.
- padx – La taille des marges internes gauche et droite de la zone de
texte. 1 pixels par défaut. Voir Les dimensions.
- pady – La taille des marges internes haute et basse de la zone de
texte. 1 pixels par défaut.
- relief – Le style de la bordure 3d du widget. 'sunken' par défaut. Pour
d’autre valeurs, voir Les
styles de relief.
- selectbackground – La couleur d’arrière plan utilisée pour le
texte sélectionné.
- selectborderwidth – L’épaisseur de la bordure qui entoure le
texte sélectionné.
- selectforeground – La couleur du texte sélectionné.
- spacing1 – Cette option précise la quantité d’espace vertical
supplémentaire à mettre au dessus de chaque ligne de texte. Si la ligne est enveloppée
(wrap) c’est à dire qu’un ou des retours de ligne sont automatiquement
insérés pour que la ligne n’excède pas la largeur de la fenêtre, cet espace est ajouté
avant la première ligne seulement. Sa valeur par défaut est 0.
- spacing2 – Cette option précise la quantité d’espace vertical
a ajouter entre deux lignes «logique» lorsque la ligne «physique» dont elles font partie a
été enveloppée (wrap - voir l’option précédente pour les détails). Sa valeur
par défaut est 0.
- spacing3 – Cette option précise la quantité d’espace vertical
supplémentaire à mettre en dessous de chaque «vrai» ligne de texte. Sa valeur par défaut est
0.
- state – Par défaut, un widget Text réagit aux saisies clavier ainsi qu’à la souris,
c’est l’état 'normal'. Si vous utilisez state='disabled', le widget ne réagira plus et
l’utilisateur ne pourra plus ajouter de contenu (ni vous par programmation).
- tabs – Cette option contrôle la façon dont le caractère Tab
positionne le texte. Voir Régler les
tabulations.
- takefocus – Par défaut, ce widget obtient le focus normalement
(voir Le focus: réception des
saisies clavier). Utilisez takefocus=0 si vous souhaitez désactiver ce comportement.
- undo – Mettre cette option à True pour activer le mécanisme d’historique, ou à False pour le désactiver. Voir Gestion de l’historique.
- width – La largeur du widget exprimée en nombre de caractères (non
en pixels!), conformément à la police de caractères courante.
- wrap – Cette option contrôle l’affichage des lignes trop
longues. Le comportement par défaut, wrap='char', est d’insérer des sauts de ligne «logique» au
niveau d’un caractère arbitraire. Utilisez wrap='word' et les sauts de lignes seront insérés après le
dernier mot qui tient dans la ligne. Enfin, utilisez wrap='none' si vous ne souhaitez pas que des sauts de ligne soit
insérés, équipez alors le widget d’une barre de défilement horizontale.
- xscrollcommand – Pour associer à ce widget une barre de défilement
horizontale, configurez cette option avec la méthode set() de la barre de défilement.
- yscrollcommand – Similaire à l’option précédente mais pour un
défilement vertical.
|
Les index
Un index est une chaîne de caractère qui sert à préciser une position dans le contenu
d’un widget Text. Cette chaîne de
caractères est de la forme:
- 'ligne.colonne'
- La position située juste avant la colonne indiquée (en comptant à partir de 0) sur la
ligne donnée (en comptant à partir de 1). Par exemples: '1.0' est la position de démarrage du texte; '2.3' est la position située juste avant le
quatrième caractère de la deuxième ligne.
- 'ligne.end'
- La position située juste avant le caractère de saut de ligne de la ligne indiquée (en
comptant à partir de 1). Ainsi, par exemple, l’index '10.end' est la position situé à la fin de la dixième ligne de texte.
- 'insert'
- La position du curseur d’insertion.
- 'current'
- La position du caractère qui est le plus proche de la position du pointeur de la souris.
- 'end'
- La position située juste après le dernier caractère du texte.
- 'sel.first'
- Si une portion de texte est actuellement sélectionnée (comme en cliquant-glissant la souris sur
celui-ci), il s’agit de la position située juste avant le début de la sélection. Si vous essayez
d’utiliser cet index et que rien n’est sélectionné, une exception de type TclError est levée.
- 'sel.last'
- La position située juste après la fin de la sélection s’il y en a une. Une exception du même
type que pour 'sel.first' est levée
s’il n’y en a pas.
- 'nom_marque'
- Vous pouvez utiliser une marque comme index; utilisez simplement son nom là où un index est attendu.
Voir Les marques.
- 'tag.first'
- La position avant le premier caractère de la région de texte taguée avec tag. Voir Les tags.
- 'tag.last'
- La position après le dernier caractère de la région de texte taguée avec tag.
- '@x,y'
- La position située juste avant le caractère le plus proche de la position (x, y).
- objet-embarque
- Si vous avez embarqué une image ou une fenêtre dans le widget Text, vous pouvez utilisez son nom comme un index. Voir Les images et Les fenêtres.
En supplément de ces différents moyens de base pour préciser un index, vous pouvez
construire des expressions arbitrairement complexes en ajoutant l’un de ces suffixes à un index
basique ou à une «expression d’index»:
- + n chars
- Pour l’index donné, se déplacer vers l’avant de n caractères. Cette opération
peut faire changer de ligne. Par exemple, supposez que la première ligne soit «abcdef»,
l’expression d’index '1.0 + 5 chars' désigne la
position située entre le «e» et le «f». Vous pouvez abbréger les mots clés et omettre les blancs dans
de telles expressions tant que le résultat n’est pas ambigu. Cette expression d’index
pourrait s’abbréger '1.0+5c'.
- - n chars
- Similaire à la forme précédente mais le mouvement se fait vers l’arrière.
- + n lines
- Déplacement de n lignes vers le bas par rapport à l’index donné. Tkinter essais de
laisser la nouvelle position dans la même colonne que celle qu’elle avait dans la ligne de
départ, mais si la ligne de la nouvelle position est trop courte, la nouvelle position sera en fin de
ligne.
- - n lines
- Similaire à la précédente, mais le déplacement se fait vers le haut.
- linestart
- Déplacement à la position située avant le premier caractère de la ligne d’index donné. Par
exemple, la position 'current linestart' se rapporte au début de la ligne qui est la plus proche de la
position actuelle de la souris.
- lineend
- Déplacement à la position situé après le dernier caractère (qui n’est pas un saut de ligne) de
la ligne d’index donné. Par exemple, 'sel.last lineend' se rapporte à la fin de la
ligne qui possède le caractère de fin de la sélection courante.
- wordstart
- La position située avant le début du mot qui contient la position d’index donné. Par exemple,
'11.44 wordstart'
se rapporte à la position située juste avant le premier caractère du mot qui contient le 45ème
caractères de la ligne 11. Dans ce contexte, un mot est soit une chaîne composée de lettres, de
chiffres ou du caractère (_) ou un seule caractère qui n’est d’aucun de ces types.
Les marques
Une marque représente une position flottante (ou glissante) quelquepart dans le contenu d’un
widget Text.
- Pour gérer chaque marque, vous lui donnez un nom. Ce nom peut être n’importe quelle chaîne de
caractères qui ne contient ni espace, ni point.
- Il y a deux marques spéciales. 'insert'
qui est la position courante du curseur et 'current' qui est la position la plus proche du pointeur de la souris.
- Les marques glissent en même temps que le contenu adjacent: Si vous ajoutez du texte en amont
d’une marque, la marque conserve la même position relativement aux contenus immédiatement
voisins.
- Les marques possèdent une propriété appelée «gravité» qui contrôle ce qui arrive
lorsque vous insérez du texte à la position marquée. La gravité par défaut est 'right', ce qui signifie que lorsque vous
insérez du texte sur la marque, celle-ci reste à la fin du texte inséré. Si vous réglez la gravité à
'left' (en utilisant la méthode Text.mark_gravity() du
widget de texte), la marque restera à la position située juste avant le texte inséré sur celle-ci.
- Supprimer du texte autour d’une marque ne supprime pas la marque. Pour supprimer une marque,
utilisez la méthode Text.mark_unset() du
widget texte.
Reportez-vous à Méthodes du widget Text,
ci-desssous, pour comprendre comment manipuler les marques.
Les images
Vous pouvez mettre une image ou un bitmap à l’intérieur du widget Text. Elle sera traitée comme un caractère
unique dont la taille est celle de l’objet. Voir Les images et Les bitmaps.
Les images sont placées dans le texte en appelant la méthode image_create() du widget Text. Voir plus loin pour la séquence d’appel et d’autres
méthodes pour manipuler les images.
On manipule les images en fournissant leur nom à des méthodes du widget Text. Vous pouvez préciser à Tkinter le nom
d’une image ou le laisser en produire un par défaut.
Une image peut apparaître un nombre arbitraire de fois dans le même widget de texte. Chaque instance de
l’image aura un nom unique. Ces nom peuvent être utilisés comme index.
Les fenêtres
Vous pouvez mettre (ou embarquer) n’importe quel widget de Tkinter - même un cadre qui contient
d’autres widgets - à l’intérieur du widget Text. Par exemple, vous pouvez y mettre un bouton parfaitement opérationnel
ou un ensemble de boutons radios.
Pour cela, utilisez la méthode window_create() du widget texte. Pour la séquence d’appel et
d’autres méthodes utiles dans ce contexte, voir Méthodes du widget Text.
Régler les tabulations
L’utilisation de la touche tabulation permet de faire avancer le curseur jusqu’à une
position déterminée par un taquet de tabulation ou, à défaut, de créer une certaine quantité
d’espaces blanches.
L’option tabs du widget Text vous donne plusieurs possibilités pour déterminer l’emplacement
des taquets de tabulation à l’intérieur du widget texte.
- Le comportement par défaut est de placer un taquet de tabulation tous les 8 caractères.
- Pour préciser un jeu de taquets de tabulation, réglez cette option avec un tuple contenant une ou
plusieurs mesures. Par exemple, le réglage tabs=('3c', '5c', '12c')
place des taquets de tabulations à 3, 5 et 12 cm du bord gauche de la page. Après le dernier taquet de
tabulation que vous avez explicitement positionné, l’espace entre deux taquets de tabulation
sera le même que celui qui sépare les deux derniers taquets du réglage. Ainsi, pour continuer notre
exemple, et parcque 12c-5c=7cm, si l’utilisateur appuie de nouveau sur la touche tab, le curseur
sera positionné à 19cm, puis à 26cm, 33cm et ainsi de suite.
- Normalement, le texte situé après un caractère de tabulation est aligné de sorte que son côté gauche
soit sur le taquet de tabulation, mais vous pouvez inclure l’un des mots clés qui suivent dans
cette liste afin de modifier la position du texte situé après une tabulation:
- Un taquet de tabulation avec 'left' a
le comportement par défaut.
- Avec 'right' , le texte sera
positionné de telle sorte que son bord droit soit sur le taquet de tabulation.
- Avec 'center', le texte est centré
sur le taquet de tabulation.
- Avec 'numeric', le texte est
positionné en plaçant le premier ”.” qu’il contient sur le taquet de tabulation.
- Par exemple, le réglage tabs=('2c', '4.5c', 'right', '9c', 'center', '13c', 'numeric') positionnera quatre taquets de tabulation: le premier à 2 cm du
bord gauche de la page avec un alignement à gauche du texte, le second à 4.5 cm du bord avec un texte
aligné à droite, le troisième à 9cm du bord avec un alignement au centre et le quatrième à 13cm du
bord avec un alignement sur le séparateur décimal. Si l’utilisateur insère de nouvelles
tabulations, leurs taquets apparaîtront à 13-9=4cm les unes des autres avec le dernier alignement de
la liste c’est à dire 'numeric'.
Gestion de l’historique
Le widget Text possède un mécanisme intégré
qui vous permet d’implémenter un historique et ses opérations de «retour arrière» ou de «retour
avant». Ces opérations servent à annuler ou à remettre en l’état les modifications du contenu du
widget.
Voici comment fonctionne la pile d’historique:
- Chaque modification du contenu est enregistré en insérant une entrée en haut de la pile qui décrit
la modification comme une insertion ou une suppression. Ces entrées enregistrent l’état passé du
contenu aussi bien que son état présent: Le texte supprimé ou inséré est enregistré avec sa position
et la modalité: suppression ou insertion.
- Votre programme peut aussi mettre en haut de la pile une entrée spéciale appelée séparateur.
- Une opération «retour arrière» (undo) modifie le contenu de l’éditeur jusqu’à
ce qu’il soit dans l’état où il se trouvait à un certain point. Pour réaliser cela,
l’éditeur reprend une à une les entrées de la pile (du haut vers le bas) et les «rejoue à
l’envers» jusqu’à ce qu’il tombe sur un séparateur ou sur le fond de la pile.
- Il faut ajouter que Tkinter mémorise combien d’entrées de la pile ont été rétablies dans
l’opération de retour arrière, jusqu’à ce que d’autres opérations d’édition
aient modifié le contenu de l’éditeur.
- Une opération de «retour avant» ne peut fonctionner que si l’éditeur n’a pas été modifié
depuis la dernière opération de «retour arrière». Dans ce cas, il réapplique toutes les opérations
précédemment annulées.
Les méthodes utilisées pour implémenter la pile d’historique sont principalement edit_redo(), edit_separator(), et edit_undo(); elles sont
détaillées dans Méthodes du widget Text. Le
mécanisme d’historique n’est pas activé par défaut; vous devez mettre à True l’option undo du
widet Text pour l’activer.
Méthodes du widget Text
Les méthodes qui suivent sont disponibles sur tout widget de type Text:
-
Text.bbox(index)
-
Retourne la boîte englobante du caractère d’index donné, comme un 4-tuple (x, y,
largeur, hauteur). Si le caractère n’est pas visible, la valeur de retour est None. Remarquez que cette méthode peut
retourner une valeur imprécise tant que vous n’avez pas appelé la méthode update_idletasks()
(voir Méthodes communes à tous les
widgets).
-
Text.compare(index1,
op, index2)
-
Compare les position de deux index du widget texte, et retourne True si la relation précisé par op entre les deux index est
vérifiée. L’argument op sert à préciser la comparaison à effectuer: '<', '<=', '==', '!=',
'>=', ou '>'.
Par exemple, pour un widget de texte t,
t.compare('2.0', '<=', 'end') retourne True si le début de la deuxième ligne est
situé avant la fin du texte contenu dans t.
-
Text.delete(index1,
index2=None)
-
Supprime le texte qui situé juste après index1. Si le deuxième argument est omis, seul un
caractère est supprimé. Sinon, la suppression porte sur tout les caractères situés strictement entre
les positions index1 et index2. Notez bien qu’un index désigne une position
entre deux caractères.
-
Text.dlineinfo(index)
-
Retourne la boîte englobante pour la ligne qui contient la position d’index donné.
Voir la méthode index() ci-dessus
pour prendre connaissance de la forme de la valeur de retour ainsi que du besoin éventuel de
rafraîchir certaines tâches assoupies (idle tasks).
-
Text.edit_modified(arg=None)
-
Récupére, positionne ou efface le drapeau des modifications. Ce drapeau est utilisé pour surveiller
les modifications éventuelles du contenu. Par exemple, si vous programmez un éditeur de texte, vous
pourriez utiliser le drapeau des modification pour déterminer si le contenu a été modifié depuis la
dernière fois où il a été sauvegardé dans un fichier.
Lorsque cette méthode est appelée sans argument, elle retourne True si le drapeau des modifications a été positionné, False sinon. Vous pouvez explicitement
positionner ce drapeau en utilisant True
comme argument ou le désactiver en utilisant False.
Toute opération qui modifie le contenu de l’éditeur positionne ce drapeau, que ce soit une
insertion ou suppression de texte, de manière programmée ou suite aux actions de l’utilisateur
ou encore à un retour arrière dans l’historique.
-
Text.edit_redo()
-
Annule un retour arrière dans l’historique (redo). Pour plus de détails, voir Gestion de l’historique.
-
Text.edit_reset()
-
Efface l’historique.
-
Text.edit_separator()
-
Ajoute un séparateur sur la pile de gestion de l’historique. Ce séparateur limite le champ
d’application d’une opération de retour arrière dans l’historique de façon à
inclure les seuls changements qui se sont produits après que le séparateur a été placé dans la pile.
Pour plus de détails, voir Gestion de
l’historique.
-
Text.edit_undo()
-
Annule toute les modifications du contenu de l’éditeur qui ont eu lieu après
l’insertion d’un séparateur dans la pile de gestion de l’historique (ou
jusqu’au debut de la pile s’il n’y a pas de séparateur). Pour plus de détails,
voir Gestion de l’historique. Une
erreur est levée si la pile était vide au moment de l’appel.
-
Text.image_create(index,
option=valeur, ...)
-
Cette méthode sert à insérer une image dans l’éditeur juste après la position précisée par
l’index. Une image est traitée de la même façon qu’un caractère dont la taille
serait celle de l’image.
Les options pour cette méthode sont données ci-après. Vous pouvez transmettre une série
d’arguments de la forme option=valeur, ou un dictionnaire que qui contient les noms
d’options comme clés.
- align
- Cette option précise l’alignement vertical de son image si sa hauteur est inférieure à la
hauteur de la ligne qui la contient. Les valeurs possibles sont 'top' pour un alignement en haut, 'center' pour un centrage vertical; 'bottom' pour la placer tout en bas; ou 'baseline' pour aligner le bas de
l’image avec la ligne de base du texte.
- image
- L’image à utiliser. Voir Les
images.
- name
- Vous pouvez donner un nom à cette instance de l’image. Si vous ne renseignez pas cette
option, Tkinter produira un nom unique pour cette instance. Si vous créez de multiples instances
d’une même image dans le même widget de texte, Tkinter produira un nom unique en ajoutant la
lettre “#” suivi d’un nombre.
- padx
- Sert à indiquer un espace supplémentaire (en pixels) à ajouter à gauche et à droite de
l’image.
- pady
- Sert à indiquer un espace supplémentaire (en pixels) à ajouter au dessus et en dessous de
l’image.
-
Text.get(index1,
index2=None)
-
Utilisez cette méthode pour récupérer le texte situé actuellement entre les positions
index1 et index2. Si le deuxième argument est omis, la méthode retourne le
caractère situé juste après la position index1. Les images ou fenêtres embarquées sont
ignorées. Si l’intervalle contient plusieurs lignes, elles sont séparées par des caractères
spéciaux '\n'.
-
Text.image_cget(index,
option)
-
Sert à récupérer la valeur d’une option (précisée sous la forme d’une chaîne)
d’une image embarquée de position index (rappel: le nom d’une image est un
index)
-
Text.image_configure(index, option=valeur,
...)
-
Sert à configurer une ou plusieurs options de l’image embarquée qui est identifiée par
index.
Si aucune option n’est précisée, la méthode retournera un dicitionnaire qui contient toutes
les options et les valeurs correspondantes définies pour cette image.
-
Text.image_names()
-
Retourne un tuple qui contient les noms de toutes les images embarquées dans le widget Text appelant.
-
Text.index(i)
-
Étant donné un index i, retourne la position équivalente sous la forme 'ligne.colonne'.
-
Text.insert(index,
text, tags=None)
-
Insère le texte donné à la position index.
Si vous ne précisez pas l’argument tags, le texte inséré aura le ou les tags qui
s’appliquent éventuellement aux caractères qui entourent le point d’insertion.
Si vous souhaitez appliquer un ou plusieurs tags au texte à insérer, utilisez un tuple de chaînes
de tag comme troisième arguments. Chaque tag qui s’applique aux caractères qui entourent le
point d’insertion est alors ignoré. Notez que le troisième argument doit être un tuple: si
vous fournissez une liste de tags, tkinter n’en appliquera aucun silencieusement; si vous
utilisez une chaîne de caractères, chaque caractère de la chaîne est traité comme un tag.
-
Text.mark_gravity(mark,
gravity=None)
-
Modifie ou récupère la propriété de gravité d’une marque existante; voir Les marques, pour plus
d’informations sur la propriété de gravité.
Pour régler la propriété de gravité d’une marque mark, utilisez les valeurs 'left' ou 'right' comme deuxième argument. Pour
récupérer la propriété de gravité de la marque mark, ne renseignez pas le second argument
et la méthode retournera 'left' ou 'right'.
-
Text.mark_names()
-
Retourne la liste de toutes les marques de l’éditeur, 'insert' et 'current' inclus.
-
Text.mark_next(index)
-
Retourne le nom de la marque située après la position d’index donné; s’il
n’y en a pas, une chaîne vide est retournée.
Si l’index est sous forme numérique, la méthode retourne la première marque située à cette
position. Si index est une marque, la méthode retourne la prochaîne marque qui la suit,
laquelle peut être à la même position numérique.
-
Text.mark_previous(index)
-
Retourne le nom de la marque qui est situé en amont de la position d’index donné.
S’il n’y en a pas, une chaîne vide est retournée.
Si l’index est numérique, la méthode retourne la dernière marque située à cette
position. Si l’index est une marque, la méthode retourne la marque qui la précèsde,
laquelle peut être à la même position numérique.
-
Text.mark_set(mark,
index)
-
Si aucune marque de nom mark n’existe, une marque est crée avec sa propriété de
gravité à 'right' et elle est placée à la
position d’index donné. Si la marque existe déjà, elle est déplacée à cette position.
Cette méthode peut modifier la position des marques 'insert' et 'current'.
-
Text.mark_unset(mark)
-
Supprime la marque mark. Cette méthode ne peut pas être utilisée pour supprimer les
marques 'insert' et 'current'.
-
Text.scan_dragto(x,
y)
-
Voir la méthode scan_mark() ci-dessous.
-
Text.scan_mark(x,
y)
-
Cette méthode sert à implémenter le défilement rapide de la zone visible du widget Text. Typiquement, un utilisateur enfonce
un bouton de la souris puis la déplace sans relâcher le bouton dans la direction désirée, et la zone
visible est déplacée dans cette direction à un rythme proportionnel à la distance parcourue par la
souris depuis le clic. Le mouvement peut réaliser un défilement oblique.
Pour implémenter cette fonctionnalité, liez l’événement «appui sur le bouton de la souris» à
un gestionnaire chargé d’appeler scan_mark(x, y), où x et y
représentent la position de la souris au moment de l’appui. Ensuite, liez l’événement
'<Motion>' (déplacement de la
souris) à un gestionnaire qui appelera la méthode scan_dragto(x, y) où x et y
désignent la nouvelle position de la souris.
-
Text.search(pattern,
index, option=valeur, ...)
-
Recherche le motif pattern (lequel peut être une chaîne ou une expression régulière) dans
la fenêtre en commençant à l’index indiqué. Si le motif est trouvé, la méthode
retourne un index de la forme 'ligne.colonne'; sinon, elle retourne une chaîne vide.
Les options disponibles pour cette méthode sont:
- backwards
- Mettre cette option à True pour faire
une recherche vers l’arrière à partir de la position index. Par défaut la recherche
se fait en avant.
- count
- Si vous réglez cette option avec une variable de contrôle de type IntVar, lorsque la recherche réussit vous
pouvez récupérer la longueur du texte qui correspondait au motif pattern en utilisant la
méthode get() sur cette variable après
le retour de la méthode search.
- exact
- Mettre cette option à True pour que
la chaîne trouvée soit la réplique exacte de la chaîne de motif pattern. C’est la
valeur par défaut. Comparez avec l’option regex ci-dessous.
- forwards
- Mettre cette option à True pour faire
une recherche vers l’avant. C’est la valeur par défaut de l’option.
- regexp
- Mettre cette option à True pour
interpréter la chaîne pattern comme une expression régulière dans le style du langage
Tcl. Par défaut la recherche se fait de manière exacte (voir l’option
exact). Les expressions régulières dans le style Tcl forment un
sous-ensemble des expressions régulières de Python; elles supportent ces caractères spéciaux: . ^
[c1…] (…) * + ? e1|e2
- nocase
- Mettre cette option à 1 pour une recherche insensible à la casse (majuscule/minuscule). Par
défaut, la recherche y est sensible .
- stopindex
- Pour limiter la recherche, utiliser un index pour préciser une position au delà de laquelle la
recherche ne doit pas continuer.
-
Text.see(index)
-
Si le texte situé à la position d’index donné n’est pas visible, la méthode
fait défiler la vue du widget de façon à ce que le texte devienne visible.
-
Text.tag_add(tagName,
index1, index2=None)
-
Cette méthode associe le tag nommé tagName avec la région du contenu qui est située entre
la position d’index1 et d’index2. Si index2 est omis, seul le
caractère situé juste après la position index1 est tagué.
-
Text.tag_bind(tagName,
sequence, func, add=None)
-
Cette méthode lie la séquence d’événements sequence à la région de texte taguée avec
tagName. Voir Les événements:
répondre aux actions de l’utilisateur. pour plus d’informations sur la
gestion des événements.
Pour créer une nouvelle liaison pour un texte tagué, utilisez les trois premiers arguments:
sequence sert à identifier l’événement, gest est la fonction qui sera
appelée lorsque l’événement ciblé se produira.
Pour ajouter d’autres liaisons à un texte tagué, utiliser '+' pour l’argument add.
Pour connaître le gestionnaire d’événement associé à un texte tagué pour un événement donné,
n’utilisez que les deux premiers arguments et la méthode retournera le gestionnaire
correspondant.
Pour connaître tous les événements associés à un texte tagué, n’utilisez que le premier
argument; la méthode retourne alors une liste qui contient toutes les séquences d’événement
positionnées.
-
Text.tag_cget(tagName,
option)
-
Utilisez cette méthode pour récupérer la valeur d’une option (précisée à l’aide
d’une chaîne) pour un texte tagué avec tagName.
-
Text.tag_config(tagName,
option=valeur, ...)
-
Pour modifier la valeur des options d’un texte tagué avec tagName, utilisez une ou
plusieurs déclarations option=valeur séparées par des virgules.
Si vous ne précisez aucune option, la méthode retourne un dictionnaire qui contient toutes les
options actuellement configurées pour ce texte tagué.
Voici les options de configuration pour un texte tagué:
- background
- La couleur d’arrière plan du texte tagué. Notez que vous ne pouvez pas utiliser
l’abbréviation bg.
- bgstipple
- Pour griser la couleur de fond, précisez l’un des bitmaps standards (voir Les bitmaps). Cela n’a
aucun effet si la couleur d’arrière plan n’a pas été spécifiée.
- borderwidth
- Épaisseur de la bordure autour du texte tagué. 0 par défaut. Notez que vous ne pouvez pas
utiliser bd comme abbréviation.
- fgstipple
- Pour griser un texte, utiliser un bitmap.
- font
- La police de caractères utilisée pour afficher le texte tagué. Voir Les polices de caractères.
- foreground
- La couleur utilisée pour le texte tagué. Notez que vous ne pouvez pas utiliser
l’abbréviation bd.
- justify
- Cette option, qui est positionnée pour chaque nouvelle ligne de texte du contenu, sert à
préciser son alignement; les valeurs possibles sont 'left', 'right', 'center'.
- lmargin1
- Taille du retrait (indentation) à appliquer au début de la première ligne de la portion de texte
tagué. 0 par défaut. Voir Les
dimensions pour les valeurs permises.
- lmargin2
- Taille du retrait (indentation) à appliquer au début de chaque ligne de la portion de texte
tagué. 0 par défaut.
- offset
- De combien élever (valeur positive) ou abaisser (valeur négative) le texte tagué relativement à
la ligne de base. Utilisez cela pour créer des «indices» ou des «exposants» par exemple.
- overstrike
- Mettre à 1 pour «barrer» le texte tagué (une ligne horizontale le parcourt en son centre).
- relief
- Sert à préciser le style de relief de la bordure du texte tagué. Sa valeur par défaut est 'flat'. Voir Les styles de relief pour
d’autres valeurs possibles.
- rmargin
- Largeur de la marge droite à appliquer pour le texte tagué. Sa valeur par défaut est 0.
- spacing1
- Cette option précise la quantité d’espace vertical supplémentaire à ajouter au dessus de
chaque ligne de la portion de texte tagué. Si certaines lignes sont enveloppées (saut de ligne
logique pour éviter le débordement à droite), cet espace supplémentaire n’est appliqué
qu’à la première ligne. Sa valeur par défaut est 0.
- spacing2
- Quantité d’espace vertical supplémentaire à ajouter entre deux lignes qui font partie
d’une seule ligne physique qui a été coupée pour éviter un débordement à droite. Sa valeur
par défaut est 0.
- spacing3
- Quantité d’espace vertical supplémentaire à ajouter en dessous d’une ligne physique
(par opposition à une ligne enveloppée). Sa valeur par défaut est 0.
- tabs
- Sert à préciser le traitement des tabulations pour la portion de texte taguée comme
l’option de même nom du widget Text. Voir Régler
les tabulations.
- underline
- Mettre à 1 pour souligner la portion de texte taguée.
- wrap
- Longueur maximale d’une ligne de texte au-dessus de quoi elle est coupée (logiquement)
afin de ne pas excéder cette longueur. Voir la description de l’option wrap
du widget Text plus haut.
-
Text.tag_delete(tagName,
...)
-
Pour supprimer un ou plusieurs tags, donnez leurs noms à cette méthode. Leurs options et liaisons
sont perdues, et les différentes portions de texte taguées avec ce tag le perdent.
-
Text.tag_lower(tagName,
sousLui=None)
-
Utilisez cette méthode pour modifier l’ordre des tags dans la pile des tags (voir Les tags, pour une description de cette
«pile»). Si vous précisez deux arguments, le tag de nom tagName est déplacé juste en
dessous du tag de nom sousLui. Si vous n’utilisez que le premier argument, le tag est
déplacé tout en bas de la pile.
-
Text.tag_names(index=None)
-
Si vous précisez index, cette méthode retourne la liste de tous les tags qui sont associés
au caractère situé immédiatement après la position index. Sans argument, vous obtenez la
liste de tous les tags définis pour le widget Text appelant.
-
Recherche le texte tagué avec tagName et dont le premier caractère n’est pas situé
avant le caractère d’index index1 ni après le caractère situé juste avant celui
d’index index2. Si index2 n’est pas précisé, la recherche se poursuit
jusqu’à la fin du texte.
Si la recherche aboutit, la méthode retourne une liste [i0, i1], où i0 est
l’index du premier caractère tagué et i1 la position situé juste après le dernier
caractère tagué. Si plusieurs étendus de texte taguées existent, seul la première trouvée est pris
en considération.
Si rien n’est trouvé, la méthode retourne une chaîne vide.
-
Text.tag_prevrange(tagName, index1,
index2=None)
-
Cette méthode est similaire à la précédente, mais le premier caractère tagué avec tagName
ne doit pas être situé après le caractère d’index index1 ni avant le caractère
d’index index2. Si plusieurs étendus de texte correspondent, celle qui est la plus
proche d’index1 est choisie. Si index2 n’est pas précisé, alors par
défaut il correspond au début du texte.
La valeur de retour est similaire à celle retournée par tag_nextrange().
-
Text.tag_raise(tagName,
surLui=None)
-
Utilisez cette méthode pour modifier l’ordre des tags dans la pile des tags (voir Les tags pour plus d’explications
sur cette pile). Si vous utilisez deux arguments, le tag tagName est déplacé juste
au-dessus du tag surLui. Si vous n’utilisez qu’un argument, le tag indiqué est
placé tout en haut de la pile.
-
Text.tag_ranges(tagName)
-
Cette méthode trouve tous les intervalles de texte tagués avec tagName et retourne une
liste [d0, f0, d1, f1, …], où chaque di est l’index juste avant le premier caractère de
l’intervalle tagué et fi est
l’index juste après le dernier caractère de cet intervalle. Si rien n’est trouvé, une
chaîne vide est retournée.
-
Text.tag_remove(tagName,
index1, index2=None)
-
Supprime le tag tagName de tous les caractères situés entre index1 et juste avant
index2. Si index2 est omis, seul le tag du caractère situé juste après
index1 est supprimé.
-
Text.tag_unbind(tagName,
sequence, funcid=None)
-
Supprime la liaison entre l’événement précisé par sequence et la portion de texte
taguée avec tagName. Si vous avez plusieurs gestionnaires pour l’événement précisé
par sequence, vous pouvez en enlever un seul en l’indiquant comme troisième argument.
-
Text.window_cget(index,
option)
-
Retourne la valeur de l’option précisée par une chaîne pour le widget embarqué situé
à la position précisé par index.
-
Text.window_configure(index, option=valeur,
...)
-
Sert à modfier une ou plusieurs options d’un widget embarquéi, à la position précisé par
index, en donnant une ou plusieurs paires option=valeur.
Si vous n’indiquez aucune option, la méthode retourne un dictionnaire qui contient les
options et leurs valeurs courantes.
-
Text.window_create(index,
option, ...)
-
Cette méthode crée une fenêtre par l’intermédiaire de laquelle un widget peut être inséré
dans le contenu du texte. Il y a deux moyens d’embarquer un widget:
- vous pouvez passer le widget à l’option window de cette méthode, ou
- vous pouvez définir une fonction sans argument (procédure) qui créera le widget et la passer à
son option create.
Les options pour cette méthode sont:
- align
- Précise comment positionner verticalement le widget embarqué dans sa ligne, s’il
n’est pas aussi haut que le texte de cette ligne. Les valeurs incluent: 'center' (par défaut), ce qui a pour
effet de centrer le texte verticalement dans sa ligne; 'top', ce qui place son bord haut sur le haut de la ligne; 'bottom', ce qui place son bord bas sur
le bas de la ligne; et 'baseline', ce
qui aligne son bord bas avec la ligne de base du texte.
- create
- Une fonction sans argument (procédure) qui sera chargée de créer le widget embarqué à la
demande. Cette fonction doit créer le widget comme enfant du widget Text appelant et retourner ce widget.
- padx
- Espace supplémentaire à ajouter à gauche et à droite du widget dans la ligne de texte. 0 par
défaut.
- pady
- Espace supplémentaire à ajouter au dessus et en dessous du widget à l’intérieur de la
ligne de texte. 0 par défaut.
- stretch
- Sert à préciser ce qui arrive dans le cas où la ligne est plus haute que le widget embarqué. Sa
valeur par défaut est 0, ce qui signifie que le widget conserve sa taille normale. Si stretch=1, le widget est étiré
verticalement de manière à remplir la hauteur de la ligne et l’option align est
ignorée.
- window
- Le widget à embarquer. Ce widget doit être un enfant du widget Text appelant.
-
Text.window_names()
-
Retourne une liste qui contient les noms de tous les widgets actuellement embarqués dans le texte.
-
Text.xview('moveto',
fraction)
-
Cette méthode fait défiler l’éditeur horizontalement pour amener le bord gauche de la vue (si
possible) à la position précisée par fraction (appartient à [0.0,1.0]). Par exemple, si fraction=0.5, le bord gauche de la vue
correspond à 50% de la largeur totale de l’éditeur. Cette méthode peut être transmise à
l’option command d’une barre de défilement horizontale associée à
l’éditeur.
Si fraction=0.0, le bord gauche de la
vue coincide avec le bord gauche de l’éditeur. Si fraction=1.0, le bord droit de la vue coincide avec le bord droit de
l’éditeur.
-
Text.xview('scroll',
n, quoi)
-
Dans cette deuxième forme, la vue défile de n fois quoi lequel peut prendre la
valeur 'units' (1 caractère) ou 'pages' (largeur de la vue). Le sens du
déplacement dépend du signe de n (positif vers la droite, négatif vers la gauche)
-
Text.xview_moveto(fraction)
-
Fait défiler la vue de la même façon que xview('moveto', fraction).
-
Text.xview_scroll(n,
quoi)
-
Pareil que xview('scroll', n, quoi).
-
Text.yview('moveto',
fraction)
-
Pareil que xview('moveto',…), mais pour
un défilement vertical.
-
Text.yview('scroll',
n, quoi)
-
Pareil que xview('scroll',…). Dans ce
cas 'units' désigne une ligne.
-
Text.yview_moveto(fraction)
-
Similaire à xview_moveto() dans la
direction verticale.
-
Text.yview_scroll(n,
quoi)
-
Similaire à xview_scroll() dans la
direction verticale.