⇨ MENU ⇨ MODULES ⇨ tkinter ⇨ controles standards ⇨ Text
tkinter.Text ( ).mark_set ( )
⇨ MENU ⇨ MODULES ⇨ tkinter ⇨ controles standards ⇨ Text
tkinter.Text ( ).mark_set ( )
DESCRIPTION.
Place, ou déplace, une balise, en la créant si nécessaire, à une position précise dans un éditeur de texte,
SYNTAXE.
TXT_Editeur.mark_set ( balise , index )
TXT_Editeur ⇨ instance quelconque de tkinter.Text ( ) [ OBLIGATOIRE ]
.mark_set ( ) ⇨ appel de la méthode [ OBLIGATOIRE ]
balise ⇨ nom de la balise [ OBLIGATOIRE ]
index ⇨ position de la balise [ optionnel ]
REMARQUES.
balise est un str ( ) quelconque qui désigne la balise. Le nom d'une balise est une chaine de caractères librement choisie mais ne comportant ni point ni espace.
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 ou une position particulière.Voir la méthode tkinter.Text ( ).index ( ) pour plus d'informations sur les index.
Une balise, ou marque, repère, ancre, est une position glissante dans le contenu d'un éditeur de texte. Une balise est inféodée à un élément du contenu. A chaque modification du contenu, elle actualise son index, pour rester le plus proche possible de l'index de l'élément auquel elle a été attachée au moment de sa création, ou d'un repositionnement.
Les éditeurs de texte disposent de deux balises spéciales : "insert", index du curseur d'insertion et "current" index de l'élément le plus proche du pointeur de la souris. Ces deux balises peuvent donc être déplacées par le programme avec la méthode tkinter.Text ( ).mark_set ( "insert" , index ) et tkinter.Text ( ).mark_set ( "current" , index ). où index pourra être un nom de balise. De même pour créer, ou replacer, une balise personnalisée, on pourra utiliser "insert", "current" ou tous autre nom prédéfinit d'index tel que : "end" , "sel.first", "sel.last" ...
Une balise sera utile, par exemple, pour :
- préciser un emplacement où insérer du contenu avec tkinter.Text ( ).insert ( balise , "le texte à insérer ..." ) ;
- trouver l'index de l'élément ancré à une balise après une modification avec tkinter.Text ( ).index ( balise ) ;
- déplacer le curseur d'insertion devant un élément balisé avec tkinter.Text ( ).mark_set ( "insert" , balise ) ;
EXEMPLE.
import tkinter
def FNC_Creer ( ) :
kmarque = f"Balise_{ SCA_Marques.get ( ) }"
TXT_Editeur.mark_set ( kmarque , "insert" )
FNC_Placer ( SCA_Marques.get ( ) )
FNC_Liste ( )
def FNC_Liste ( ) :
BOX_Balises.delete ( 0 , "end" )
for kbalise in TXT_Editeur.mark_names ( ) :
kindex = TXT_Editeur.index ( kbalise )
kdetail = f"{ kbalise } ({ kindex })."
BOX_Balises.insert ( "end" , kdetail )
def FNC_Placer ( event ) :
kmarque = f"Balise_{ event }"
if kmarque in TXT_Editeur.mark_names ( ) :
TXT_Editeur.mark_set ( "insert" , kmarque )
BUT_Supprimer [ "state" ] = "normal"
else :
BUT_Supprimer [ "state" ] = "disabled"
def FNC_Supprimer ( ) :
kmarque = f"Balise_{ SCA_Marques.get ( ) }"
TXT_Editeur.mark_unset ( kmarque , "insert" )
FNC_Liste ( )
TKI_Principal = tkinter.Tk ( )
BUT_Quitter = tkinter.Button ( TKI_Principal , text = "Quitter" , command = TKI_Principal.destroy )
BUT_Creer = tkinter.Button ( TKI_Principal , text = "Créer / modifier la balise" , command = FNC_Creer )
BUT_Supprimer = tkinter.Button ( TKI_Principal , text = "Supprimer la balise" , command = FNC_Supprimer )
SCA_Marques = tkinter.Scale ( TKI_Principal , orient = "horizontal" , to = 9 , command = FNC_Placer )
BOX_Balises = tkinter.Listbox ( TKI_Principal , relief = "ridge" , bd = 2 )
TXT_Editeur = tkinter.Text ( TKI_Principal , wrap = "none" , width = 40 , height = 15 )
TXT_Editeur.grid ( row = 0 , column = 0 , sticky = "nesw" )
BOX_Balises.grid ( row = 0 , column = 1 , sticky = "nesw" )
SCA_Marques.grid ( row = 1 , column = 0 , sticky = "nesw" )
BUT_Quitter.grid ( row = 1 , column = 1 , rowspan = 3 , sticky = "nesw" )
BUT_Creer.grid ( row = 2 , column = 0 , sticky = "nesw" )
BUT_Supprimer.grid ( row = 3 , column = 0 , sticky = "nesw" )
TXT_Editeur.insert ( "1.0" , "Tapez votre texte ici ...\n" )
FNC_Placer ( 0 )
FNC_Liste ( )
TXT_Editeur.focus_set ( )
TKI_Principal.mainloop ( )
Votre aide est précieuse pour améliorer ce site, alors n'hésitez pas à faire part de