+ Répondre à la discussion
Affichage des résultats 1 à 2 sur 2
  1. #1
    Membre à l'essai
    Inscrit en
    mars 2008
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : mars 2008
    Messages : 67
    Points : 21
    Points
    21

    Par défaut connecteur sur TextView

    Bonjour
    Je souhaite mettre en oeuvre une fonction dans un TextView, pour en permanence avoir le cursus visible. Par exemple après un copier coller et saisie d'un texte long le curseur finit par être caché. Bon à la main on peut faire circuler le texte avec les ascenseurs (scroll).
    J'ai vu dans la FAQ
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    vu dans la FAQ de pygtk
    14.10. How do I scroll a TextView to display the text being inserted?
     
    When inserting text using insert_at_custor(), it may happen that the text inserted surpasses the textview's current viewport, and requires scrolling.
    Gustavo Carneiro and Mikoyan wrote in to suggest using the textbuffer's scroll_to_mark() method, which scrolls to a certain point in the buffer. You can use the get_insert() method to return the current insert position right after inserting if you want to make sure you scroll to the end of the text.
     
      end_iter = text_buffer.get_end_iter()
      text_buffer.insert(end_iter, text)
      text_view.scroll_to_mark(text_buffer.get_insert(), 0)
    There is also a simplier method to make sure the text view's cursor is visible:
      text_view.scroll_mark_onscreen(text_buffer.get_insert())
    Ma question est comment on met cela en oeuvre
    avec un connecteur sur le textview ou bien par quelle autre méthode ?
    merci d'avance de votre éclairage sur le sujet.

  2. #2
    Membre à l'essai
    Inscrit en
    mars 2008
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : mars 2008
    Messages : 67
    Points : 21
    Points
    21

    Par défaut

    Bon je progresse dans ma solution adopté via les connecteurs. Je me suis rappelé de l'existence des gtk.EventBox() qui sont justement fait pour les widgets qui n'ont pas de connecteur natif si on en a besoin
    Sa commence à vivre
    ci-dessous ma commande d'activation sollicité par le connecteur
    chaque fois que je fais quelque chose dans le TextView elle s'active
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
     
    def scroll_to_cursor(self,event,data):
            ''' vérifie que la frappe de texte le curseur soit toujours visible'''
            self.textbuffer = self.TextView.get_buffer() 
            end_iter = self.textbuffer.get_end_iter()
            self.textbuffer.insert(end_iter, '')
            self.TextView.scroll_to_mark(self.textbuffer.get_insert(), 0)
            print 'coucou'
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    self.TextView = gtk.TextView() # le textView
    eventbox = gtk.EventBox()
    eventbox.add(self.TextView) 
    eventbox.connect('event', self.scroll_to_cursor) 
    self.TextView.set_wrap_mode(gtk.WRAP_WORD)
    self.textbuffer = self.TextView.get_buffer() # le buffer associé
    self.textbuffer.set_text(texte) # texte vient d'un passage de paramètre
    Vbox.add(eventbox) # ajout dans la Vbox du gtk.EventBox()
    problème scroll_to_cursor ne fait pas bouger le scroll vers l'endroit où se trouve le curseur qui a été caché à un moment donné.
    Avez-vous une idée du pb?

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •