Ubuntu很快(python / gtk) - 如何监控stdin?

时间:2010-06-07 19:27:23

标签: python gtk pygtk canonical-quickly

我开始使用Ubuntu的“快速”框架,它基于python / gtk。我想为使用stdin / stdout的textmode C状态机编写一个gui包装器。

我是gtk的新手。我可以看到python print命令将写入终端窗口,所以我假设我可以将它重定向到我的C程序的stdin。但是如何让我的快速程序监控stdin(即观察C程序的stdout响应)?我想我需要某种轮询循环,但我不知道在“快速”框架内是否支持/何处。

或重定向不是要走的路 - 我应该看看像gobject.spawn_async这样的东西吗?

2 个答案:

答案 0 :(得分:4)

select的gtk版本是glib.io_add_watch,你可能想要将进程的stdin / stdout重定向到GUI,你可以查看我以前写过的文章:

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

答案 1 :(得分:2)

我不确定快速框架,但在Python中你可以使用子进程模块,它产生一个新的子进程,但允许通过stdin / stdout进行通信。

http://docs.python.org/library/subprocess.html

看看文档,但这非常有用。

如果您想进行投票,可以使用gobject.timeout_add

你要创建一个像这样的函数:

def mypoller(self):
    data = myproc.communicate()
    if data[0]: #There's data to read
       # do something with data
    else:
       # Do something else - delete data, return False
       # to end calls to this function

这样可以让您从流程中读取数据。