2

subprocess.Popenオブジェクトを使用していくつかのサブプロセスを実行するPythonアプリケーションを作成しています。グレイドGUIがあり、これらのコマンドの出力(subprocess.Popenで実行)をGUIでリアルタイムに表示したいと考えています。

誰かがこれを行う方法を提案できますか?どの空き地オブジェクトを使用する必要があり、出力をリダイレクトする方法は?

4

3 に答える 3

2

たくさん読んだ後、私が望む結果が得られなかった後、私はうまくいく別の方法を見つけました。

こんなふうになります

#!/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_object('txtview')
proc = subprocess.Popen('ls -al /home'.split(), stdout=subprocess.PIPE, stderr = subprocess.STDOUT)
while True:
    line = proc.stdout.readline()
    viewer.get_buffer().insert_at_cursor(line)
    if not line:
       break
于 2009-12-21T16:17:48.420 に答える
2

これを行う別の方法も表示するリンクは次のとおりです。

これは非常に洞察に満ちていることがわかりました。おそらく他の誰かがこれらのヒントを使用できます。

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

于 2009-12-21T20:56:58.020 に答える
1

gladeはgtkでGUIを構築するためのプログラムにすぎないため、gladeオブジェクトを要求するときは、 gtkウィジェットを要求する必要があります。この場合、textbufferとtextviewがソリューションになるか、treeviewとliststoreになる可能性があります。 ファイルのようなオブジェクトを受け入れることができる引数がsubprocess.Popenありstdoutます。stderrテキストバッファに書き込むアダプタを作成したり、リストストアにアイテムを追加したりできます

于 2009-12-18T16:12:15.587 に答える