Le Gtk.TextBuffer est le noyau du widget Gtk.TextView et est utilisé pour contenir tout texte affiché dans le Gtk.TextView. La définition et la récupération du contenu sont possibles avec Gtk.TextBuffer.set_text () et Gtk.TextBuffer.get_text (). Cependant, la plupart des manipulations de texte sont effectuées avec des itérateurs, représentés par un Gtk.TextIter. Un itérateur représente une position entre deux caractères dans le tampon de texte. Les itérateurs ne sont pas valides indéfiniment; chaque fois que le tampon est modifié d'une manière qui affecte le contenu du tampon, tous les itérateurs en attente deviennent invalides.
Pour cette raison, les itérateurs ne peuvent pas être utilisés pour conserver les positions dans les modifications de tampon. Pour conserver une position, utilisez Gtk.TextMark. Un tampon de texte contient deux marques intégrées; une marque «insert» (qui est la position du curseur) et la marque «selection_bound». Les deux peuvent être récupérés en utilisant respectivement Gtk.TextBuffer.get_insert () et Gtk.TextBuffer.get_selection_bound (). Par défaut, l'emplacement d'un Gtk.TextMark n'est pas affiché. Cela peut être changé en appelant Gtk.TextMark.set_visible ().
De nombreuses méthodes existent pour récupérer un Gtk.TextIter. Par exemple, Gtk.TextBuffer.get_start_iter () renvoie un itérateur pointant vers la première position dans le tampon de texte, tandis que Gtk.TextBuffer.get_end_iter () renvoie un itérateur pointant au-delà du dernier caractère valide. La récupération des limites du texte sélectionné peut être obtenue en appelant Gtk.TextBuffer.get_selection_bounds ().
Pour insérer du texte à une position spécifique, utilisez Gtk.TextBuffer.insert (). Une autre méthode utile est Gtk.TextBuffer.insert_at_cursor () qui insère du texte partout où le curseur peut être actuellement positionné. Pour supprimer des parties du tampon de texte, utilisez Gtk.TextBuffer.delete ().
De plus, Gtk.TextIter peut être utilisé pour localiser des correspondances textuelles dans le tampon à l'aide de Gtk.TextIter.forward_search () et Gtk.TextIter.backward_search (). Les iters de début et de fin sont utilisés comme point de départ de la recherche et avancent / reculent selon les besoins.