Frage

Ich schreibe eine Python-Anwendung, die mehrere Teilprozesse mit subprocess.Popen Objekten ausgeführt wird. Ich habe eine Lichtung GUI und will die Ausgabe dieser Befehle angezeigt wird (Lauf in subprocess.Popen) in der gui in Echtzeit.

vorschlagen kann jemand eine Möglichkeit, dies zu tun? Was Lichtung Objekt muss ich verwenden und wie die Ausgabe zu umleiten?

War es hilfreich?

Lösung 3

Nach viel zu lesen und nicht die Ergebnisse, ich wollte, fand ich eine andere Methode, die funktioniert.

Es geht so

#!/usr/bine/env python
import subprocess
import gtk

### Of course, you should have the gui built and know which widgets to use for this.
viewer = self.builder.get_widget('txtview')
proc = subprocess.Popen('ls -al /home'.split(), stdout=subprocess.PIPE, stderr = subprocess.STDOUT)
while True:
    line = proc.stdout.readline()
    viewer.get_buffer().instert_at_cursor(line)
    if not line:
       break

Andere Tipps

Hier ist ein Link, zeigt auch eine andere Art und Weise, dies zu tun.

Ich fand diese sehr aufschlussreich sein, vielleicht jemand anderes diese Tipps nutzen kann.

http: // pygabriel.wordpress.com/2009/07/27/redirecting-the-stdout-on-a-gtk-textview/

Lichtung ist nur ein Programm zu bauen gui mit gtk so, wenn Sie bitten um ein Lichtung Objekt sollten Sie vielleicht fragen Sie nach gtk-Widget und in diesem Fall textbuffer und Textview chould eine Lösung sein, oder vielleicht treeview und liststore. subprocess.Popen hat stdout und stderr Argumente, die eine dateiähnliche Objekt annehmen kann. Sie können einen Adapter, dass Schreiben in den textbuffer oder fügen Sie Elemente in der liststore

erstellen
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top