【问题标题】:Ubuntu quickly (python/gtk) - how to monitor stdin?Ubuntu 快速(python/gtk) - 如何监控标准输入?
【发布时间】:2010-06-07 19:27:23
【问题描述】:

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

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

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

【问题讨论】:

    标签: python gtk pygtk canonical-quickly


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      我不确定快速框架,但在 Python 中,您可以使用 subprocess 模块生成一个新的子进程,但允许通过 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
      

      这会让你从你的进程中读取数据。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-09-20
        • 2019-01-12
        • 1970-01-01
        • 1970-01-01
        • 2012-02-17
        • 1970-01-01
        • 1970-01-01
        • 2011-12-20
        相关资源
        最近更新 更多