⇨ MENU ⇨ MODULES ⇨ tkinter ⇨ controles standards ⇨ Text
tkinter.Text ( ).dump ( )
⇨ MENU ⇨ MODULES ⇨ tkinter ⇨ controles standards ⇨ Text
tkinter.Text ( ).dump ( )
DESCRIPTION.
Retourne une description du contenu, éléments, balises et régions, d'un éditeur de texte compris entre deux index.
SYNTAXE.
LST_Description = TXT_Editeur.dump ( debut , fin , filtre )
LST_Description = ⇨ variable qui recevra la list ( ) [ optionnel ]
TXT_Editeur ⇨ instance quelconque de tkinter.Text ( ) [ OBLIGATOIRE ]
.dump ( ) ⇨ appel de la méthode [ OBLIGATOIRE ]
debut ⇨ index du premier élément inclus [ OBLIGATOIRE ]
fin ⇨ index du dernier élément exclus [ optionnel ]
filtre ⇨ type d'éléments de contenu à traiter [ optionnel ]
REMARQUES.
debut et fin sont des str ( ) quelconques, mais valides, désignant un index dans un éditeur de texte. Un index valide a la forme : "paragraphe.place" ou un nom correspondant à une balise de position ou une position particulière. Voir la méthode tkinter.Text ( ).index ( ) pour plus d'informations sur les index. L'index debut est inclus dans la recherche mais l'index fin en est exclu. Si fin est absent, seul élément à l'index debut est traité. Si fin précède debut, la méthode tkinter.Text ( ).dump ( ) retourne une list ( ) vide ([ ]).
filtre est un ou une suite d'arguments nommés désignant quels types d'information doit être retourné. filtre peut être :
- all = True, valeur par défaut, tous les types ci-dessous, sauf fonction ;
- command = fonction, ou fonction, pour exécuter une fonction pour chaque tuple ( ) ;
- image = True, traiter uniquement les images ;
- mark = True, traiter uniquement les balises de repérage ;
- tag = True, traiter uniquement les balises de formatage de région ;
- text = True, traiter uniquement les caractères ;
- window = True, traiter uniquement les fenêtres d'insertion.
Quand filtre vaut command = fonction, la fonction fonction sera exécutée pour chaque tuple ( ) de la list ( ). Pour chaque appel, le tuple ( ) sera décomposé en trois éléments : cle, valeur et index qui seront passés à fonction, la définition de fonction devra donc le prévoir : def FNC_Fonction ( *Q ) ou def FNC_Fonction ( Qcle , Qvaleur , Qindex ). Mais aucune list ( ) ne sera retournée en fin de traitement par l'appel de la méthode tkinter.Text ( ).dump ( ).
La méthode tkinter.Text ( ).dump ( ) retourne une description du contenu d'un éditeur de texte de la position debut inclus à la position fin exclus. Cette description donne la nature des l'éléments, leur identifiant et leur position dans une list ( ) composée de tuple ( ) ayant la forme suivante : ( cle , valeur , index ), où cle, valeur et index sont des str ( ). Quand cle, désignant la nature de l'élément, vaut :
- "text", cela signifie que la suite de caractères valeur débute à la position index ;
- "mark", cela signifie que la balise de position nommée valeur est à la position index ;
- "tagon", cela signifie qu'une région avec le formatage nommé valeur commence à la position index ;
- "tagoff", cela signifie qu'une région avec le formatage nommé valeur se termine à la position index ;
- "image" cela signifie que l'image identifiée valeur est à la position index ;
- "window", cela signifie que la fenêtre d'insertion identifiée valeur est à la position index ;
A noter que pour une valeur de "text", la suite de caractères va de index jusqu'à : l'élément suivant, l'index fin ou la fin du paragraphe. Un élément "text" ne pouvant se poursuivre sur le paragraphe suivant. Si aucun élément ne sépare des paragraphes, un élément "text" sera retourné pour chacun d'eux dans un tuple ( ), et chacune des valeur sera terminée par le saut de ligne (\n).
La valeur de "window" a la forme du chemin de la fenêtre d'insertion dans tinker ( ), sauf si la fenêtre d'insertion n'a encore que son script de création (en attente), dans ce cas, une chaîne vide est renvoyée et index permettra, ultérieurement, d'obtenir valeur dans une forme exploitable.
Si une sélection est présente au moment de l'appel, et qu'elle est comprise en debut et fin, elle sera décrite comme une région de formatage par deux tuple ( ), par forcement contiguë :
- ( "tagon" , "sel" , index ) où index reçoit la valeur réelle de "sel.first", qui indique le début de la sélection et ;
- ( "tagoff" , "sel" , index ) où index reçoit la valeur réelle de "sel.last", qui indique la fin de la sélection.
Si le curseur d'insertion ou l'élément sous le pointeur de la souris se trouvent entre debut et fin, au moment de l'appel, ils seront décrits dans un tuple ( ) comme étant des balises de position :
- ( "mark" , "insert" , index ) où index reçoit la valeur réelle de "insert", pour la position du curseur d'insertion ;
- ( "mark" , "current" , index ) où index reçoit la valeur réelle de current", pour la position de l'élément sous le pointeur.
La méthode tkinter.Text ( ).dump ( ) retournant une list ( ), il est donc possible, en important le module pickle de la bibliothèque standard de Python :
- de la sauvegarder avec la méthode pickle.dump ( ), par exemple au moment de l'enregistrement du contenu ;
- de la restituer avec la méthode pickle.load ( ), par exemple au moment du chargement du contenu.
Mais, à ce jour, il n'existe pas de méthode permettant de formater directement le contenu, d'un éditeur de texte, depuis la list ( ) retournée par la méthode tkinter.Text ( ).dump ( ). Il faudra donc prévoir ou classe ou une fonction dédiée à l'analyse des tuple ( ) de la list ( ) pour appliquer les descriptions au contenu de l'éditeur de texte.
EXEMPLE.
import tkinter , tkinter.filedialog
def FNC_Formater ( Q ) :
try :
TXT_Source.tag_add ( Q , "sel.first" , "sel.last" )
FNC_Description ( )
except :
pass
def FNC_Description ( ) :
BOX_Liste.delete ( 0 , "end" )
for kdefinition in TXT_Source.dump ( "1.0" , "end" ) : BOX_Liste.insert ( "end" , kdefinition )
def FNC_Ouvrir ( ) :
kextentions = [ ( "texte" , ".txt" ) , ( "python" , ".py" ) ]
kfichier = tkinter.filedialog.askopenfilename ( title = "Ouvrir" , filetypes = kextentions )
if len ( kfichier ) < 1 : return
TXT_Source.delete ( "1.0" , "end" )
with open ( kfichier ) as FIL_Fichier : TXT_Source.insert ( "end" , FIL_Fichier.read ( ) )
FNC_Description ( )
TKI_Principal = tkinter.Tk ( )
BUT_Quitter = tkinter.Button ( TKI_Principal , text = "Quitter" , command = TKI_Principal.destroy )
BUT_Ouvrir = tkinter.Button ( TKI_Principal , text = "Ouvrir un fichier" , command = FNC_Ouvrir )
BUT_Bleu = tkinter.Button ( TKI_Principal , text = "Bleu" , command = lambda : FNC_Formater ( "bleu" ) )
BUT_Rouge = tkinter.Button ( TKI_Principal , text = "Rouge" , command = lambda : FNC_Formater ( "rouge" ) )
BUT_Vert = tkinter.Button ( TKI_Principal , text = "Vert" , command = lambda : FNC_Formater ( "vert" ) )
BOX_Liste = tkinter.Listbox ( TKI_Principal , width = 20 )
TXT_Source = tkinter.Text ( TKI_Principal , wrap = "word" , width = 40 , height = 12 )
TXT_Source.grid ( row = 0 , column = 0 , columnspan = 3 , sticky = "nesw" )
BOX_Liste.grid ( row = 0 , column = 3 , rowspan = 4 , sticky = "nesw" )
tkinter.Label ( TKI_Principal , text = "Mettre la sélection en ..." ).grid ( row = 1 , column = 0 , columnspan = 3 )
BUT_Bleu.grid ( row = 2 , column = 0 , sticky = "nesw" )
BUT_Rouge.grid ( row = 2 , column = 1 , sticky = "nesw" )
BUT_Vert.grid ( row = 2 , column = 2 , sticky = "nesw" )
BUT_Ouvrir.grid ( row = 3 , column = 0 , columnspan = 2 , sticky = "nesw" )
BUT_Quitter.grid ( row = 3 , column = 2 , sticky = "nesw" )
TXT_Source.tag_config ( "bleu" , foreground = "blue" , background = "aqua" )
TXT_Source.tag_config ( "rouge" , foreground = "red" , background = "pink" )
TXT_Source.tag_config ( "vert" , foreground = "green" , background = "palegreen" )
TXT_Source.focus_force ( )
TKI_Principal.mainloop ( )
Votre aide est précieuse pour améliorer ce site, alors n'hésitez pas à faire part de