2

我开始使用基于 python/gtk 的 Ubuntu 的“快速”框架。我想为使用标准输入/标准输出的文本模式 C 状态机编写一个 gui 包装器。

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

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

4

2 回答 2

4

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

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

于 2010-06-07T19:39:49.753 回答
2

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

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

这将让您从您的流程中读取数据。

于 2010-06-07T19:38:35.373 回答