IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

GTK+ avec Python Discussion :

Renvoyer le résultat d'une commande shell dans un gtk.TextView


Sujet :

GTK+ avec Python

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 12
    Points : 12
    Points
    12
    Par défaut Renvoyer le résultat d'une commande shell dans un gtk.TextView
    Bonjour,

    Je cherche à renvoyer le résultat de la commande "wget" dans un gtk.TextView, mais malgré mes nombreux essais ça ne fonctionne pas...

    J'utilise pygtk2.

    J'ai par exemple essayé ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    import gtk,pygtk
    import subprocess
    import gobject
     
    class CommandTextView(gtk.TextView):
        def __init__(self,command):
            super(CommandTextView,self).__init__()
     
            self.command = command
        def run(self):
            proc = subprocess.Popen(self.command,shell=True,stdout=subprocess.PIPE)
            gobject.io_add_watch(proc.stdout,
                              gobject.IO_IN,
                              self.write_to_buffer)
        def write_to_buffer(self, fd, condition):
            if condition == gobject.IO_IN:
                char = fd.read(1)
                buf = self.get_buffer()
                buf.insert_at_cursor(char)
                return True
            else:
                return False
     
    def test():
        win=gtk.Window()
        win.set_size_request(300,300)
        win.connect('delete-event',lambda w,e : gtk.main_quit())
        ctv=CommandTextView("wget http://download-origin.cdn.mozilla.net/pub/mozilla.org/firefox/releases/1.0.5/source/firefox-1.0.5-source.tar.bz2")
        win.add(ctv)
        win.show_all()
        ctv.run()
        gtk.main()
     
    if __name__=='__main__': test()
    Il marche avec la commande "ls" par exemple, mais pour wget ça ne s'affiche pas dans la textView mais dans la console depuis laquelle on lance le programme python... Je sèche !

    Avez-vous des pistes ?

    Merci d'avance pour votre aide.

    Floréal.

  2. #2
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2015
    Messages : 5
    Points : 0
    Points
    0
    Par défaut checkoutput
    To prevent error messages from commands run through check_output() from being written to the console, set the stderr parameter to the constant STDOUT.

    import subprocess

    output = subprocess.check_output(
    'echo to stdout; echo to stderr 1>&2; exit 1',
    shell=True,
    stderr=subprocess.STDOUT,
    )
    print 'Have %d bytes in output' % len(output)
    print output

Discussions similaires

  1. Réponses: 9
    Dernier message: 14/12/2010, 12h18
  2. Réponses: 3
    Dernier message: 19/06/2007, 11h27
  3. Résultat d'une commande DOS dans une variable
    Par tomix81 dans le forum Général Python
    Réponses: 2
    Dernier message: 18/05/2007, 11h02
  4. Récupérer le résultat d'une commande shell
    Par espadon1 dans le forum Langage
    Réponses: 4
    Dernier message: 02/06/2006, 10h01
  5. Récupération du résultat d'une commande shell
    Par klu dans le forum Langage
    Réponses: 8
    Dernier message: 16/02/2006, 23h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo