LE WIDGET TEXTE

Le widget texte est une aire qui vous permet de saisir du texte à la façon d'un blocnote.

Ce widget est prticulièrement puissant puisqu'il vous permet, en utilisant les tag de coloriser le texte, ou lui attribuer une police précise pour chaque tag. Je vous renvoi à ce logiciel nommé scripiT ou vous comprendrez en lisant le code comment cela est faisable.

PETIT EDITEUR DE TEXTE TRES SIMPLE

 

Dans ce petit exemple nous allons voir comment copier, couper, coller et recher du texte dans un widget TEXT.

Voici le code de l'exemple que nous commenterons ensuite :

Preview:

wm title . "essai"
wm geometry . 650x400+10+10

pack [frame .f ] -fill x
pack [button .f.b1 -text "copier" -command {clipboard clear; clipboard append [selection get]}] -side left
pack [button .f.b2 -text "coller" -command {set idx [.t index insert]; .t insert $idx [selection get -selection CLIPBOARD]}] -side left
pack [button .f.b3 -text "couper" -command {set owner [selection own]; clipboard append [selection get]; $owner delete sel.first sel.last}] -side left
pack [entry .f.e6] -fill both -side left -expand 1 
pack [button .f.b4 -text "rechercher" -command {set cherchequoi [.f.e6 get]; set longueurtexte [string length [.f.e6 get]];
	set ouca [.t search -- $cherchequoi 0.0 end]; .t tag add sel $ouca "$ouca + $longueurtexte chars"
	}] -side left
pack [button .f.b5 -text "fin"] -side left
pack [button .f.b6 -text "b1"] -side left

pack [button .f.b7 -text "quit" -command {exit}] -side right

pack [text .t] -fill both -expand 1

 

Pour copier du texte, sélectionnez le avec la souris puis écrivons ces deux commandes :

  • Effaçons d'abord le presse papier : clipboard clear
  • Copions la sélection de notre widget text : clipboard append [selection get]

 

Pour Coller le texte à partir du presse papier il faut :

  • Récupérer l'index courant d'où est situé le curseur actuel  : set idx [.t index insert]
  • Coller le texte du presse papier à cet endroit : .t insert $idx [selection get -selection CLIPBOARD]

Pour couper du texte, cela se fait en trois étapes qui sont :

  • Récupérer la sélection de la souris par le code  suivant : set owner [selection own]
  • Copier le code dans le presse papier : clipboard append [selection get]
  • Effacer la sélection de la souris ayant l'impression de l'avoir coupé : $owner delete sel.first sel.last

 

 Enfin, pour Rechercher du texte il faut ces 4 étapes :

  • Définir une variable avec le texte à rechercher : set cherchequoi [.f.e6 get]
  • Définir la longuer du texte à rechercher : set longueurtexte [string length [.f.e6 get]]
  • Lancer la requête de recherche : set ouca [.t search -- $cherchequoi 0.0 end]  (l'index ainsi retourné est de la forme  : ligne.colonne )
  • Ajouter un tag de sélection pour encadrer la sélection :  .t tag add sel $ouca "$ouca + $longueurtexte chars" 

 

 

EFfacer tout le texte

il suffit d'utiliser la commande delete du début index 0.0 à la fin (end)

.txt1 delete 0.0 end

positionner le curseur a un endroit donné

 il suffit de donner les coordonnées ligne.colonne en utilisant la commande ci dessous:

.txt1 mark set insert 1.2

Ici le curseur ira en ligne 1 colonne 2

recuperer l'integralite du texte dans une variable

il suffit d'utiliser la commande get :

set montexte [.txt get 0.0 end]

.

.