Forum Programmation.python Textview Python/Gtk

Posté par  (site web personnel) .
Étiquettes : aucune
0
3
sept.
2004
Bonjour,

J'utilise Python/GTK pour réaliser un petit editeur de fichier

Le code

info=open("%s/etc/sec/%s.route" % (i,i))
text1 = info.read()
buffer = self.textview2.get_buffer()
buffer.set_text(text1)

Affiche correctement mon texte, malheuresement apres edition
je ne sais pas comment recuperer le contenu de ma fenetre textview2
et l'injecter dans mon fichier info.

Merci de vos conseils.
  • # je suis nul en python mais...

    Posté par  (site web personnel) . Évalué à 3.

    Tout se passe dans le buffer, le textview n'est là que pour l'affichage.
    Je n'y connait rien en python, mais bon celà reste du GTK, tu devrais donc avoir la fonction :
    buffer.get_text
    qui prend en paramètre 2 TextIter qui représente la position de début et de fin que tu veux "extraire" de ton buffer, le dernier paramètre étant un booléen indiquant si tu veux récupérer les caractères cachés (mais celà à false).
    Comment récupérer les TextIter ?
    Toujours sur ton buffer, tu as les méthodes get_start_iter, et get_end_iter...
    voilà normalement tu devrais pouvoir y arriver avec tout ça bon courage :)
  • # tuto pour gtk textwiew

    Posté par  . Évalué à 1.

    j utilise ce tutoriel pour gtk (super bien fait) malheureusement il est en c
    mais la syntaxe est tr?s proche du python
    http://www.gtk-fr.org/index.php?page=cours&id=21(...)
    et pour v?rifier la syntaxe
    http://www.pygtk.org/pygtk2reference/class-gtktextview.html(...)

    sinon toujours sur gtk et le textview en particulier je n arrive pas a l utiliser avec threading (pas de rafra?chissement) et gtk ce bloque tant que la tache n est pas fini
    si vous avez un tutoriel en fr pour le multi-tache sur python je suis preneur
    • [^] # Re: tuto pour gtk textwiew

      Posté par  . Évalué à 3.

      Vive PyGTK FAQ ! Moi ça me résoud presque tout le temps mes problèmes. Ensuite, il suffit de naviguer dans les docs de PyGTK. Le tutoriel est toujours pratique, mais surtout la référence donne accès à tout ce qu'il faut savoir.

      FAQ: http://www.async.com.br/faq/pygtk/index.py?req=index(...)
      Tutoriel: http://www.pygtk.org/pygtk2tutorial/index.html(...)
      Référence: http://www.pygtk.org/pygtk2reference/index.html(...)


      Pour le threading, c'est un peu délicat. Il y a plusieurs réponses dans la PyGTK FAQ, suivant les types de situations :

      3.7 While my callback is executing, nothing is refreshed in the application windows! ( http://www.async.com.br/faq/pygtk/index.py?req=show&file=faq03.(...) )
      20. The GTK Mainloop and Threading

      L'une d'entres elles consiste à faire croire à l'utilisateur que GTK tourne toujours en le forçant à effectuer les tâches qu'il a en stock... Ça peut être pratique, mais c'est pas du threading. Généralement cette méthode est pratique pour mettre à jour des informations dans les fenêtres GTK quand on est dans un callback un peu (beaucoup) très long.

      Sinon, on peut aussi initialiser le système de thread pour qu'il soit plus GTK aware (et inversement). Ça se passe au moment de l'initialisation de GTK. Au lieu d'utiliser seulement gtk.main() pour lancer la loop principale, on lance le mode threads avant et on le quitte après. C'est pas encore tout à fait le top, mais apparemment ça a l'air de marcher dans mes applis...


      gtk.gdk.threads_init()
      gtk.gdk.threads_enter()
      gtk.main()
      gtk.gdk.threads_leave()
  • # Merci à tous

    Posté par  (site web personnel) . Évalué à 1.

    Ok ça fonctione avec les méthodes get_start_iter, et get_end_iter.

    J'ai un deuxieme petit soucis
    J'essaye d'ecrire dans un fichier mais impossible de l'ouvrir
    avec l'option write en utilsant %s

    En lecture pas de soucis:
    info=open("%s/etc/sec/%s.route" % (name,name))

    En ecriture (j'ai essaye diverses syntaxe ...):
    info=open(""%s/etc/sec/%s.route","w"" % (name,name))

    Syntax error

    Par contre en utilisant le nom de fichier pas de probleme

    info=open("toto/etc/sec/toto.route", "w")

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.