Python GUI(glade)显示shell进程的输出

时间:2009-12-18 15:55:11

标签: python user-interface glade

我正在编写一个使用subprocess.Popen对象运行多个子进程的python应用程序。 我有一个glade GUI,想要在gui中实时显示这些命令的输出(在subprocess.Popen中运行)。

有人可以建议一种方法吗?我需要使用哪种glade对象以及如何重定向输出?

3 个答案:

答案 0 :(得分:2)

这是一个链接,它还显示了另一种方法。

我发现这非常有见地,也许其他人可以使用这些技巧。

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

答案 1 :(得分:1)

glade只是一个使用gtk构建gui的程序,因此当你要求 glade对象时,你应该要求 gtk widget ,在这种情况下textbuffer和textview chould是一个解决方案,或者树视图和列表库。 subprocess.Popen具有stdoutstderr个参数,可以接受类似文件的对象。您可以创建一个写入textbuffer的适配器或在liststore中添加项目

答案 2 :(得分:1)

经过大量的阅读并且没有得到我想要的结果,我找到了另一种方法。

就像这样

#!/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