Ubuntu быстро (python / gtk) - как контролировать стандартный ввод? - PullRequest
2 голосов
/ 07 июня 2010

Я начинаю работать с "быстрой" средой Ubuntu, основанной на python / gtk.Я хочу написать оболочку GUI для конечного автомата C текстового режима, который использует stdin / stdout.

Я новичок в GTK.Я вижу, что команда печати python будет записывать в окно терминала, поэтому я предполагаю, что мог бы перенаправить это в stdin моей C-программы.Но как я могу получить мою быструю программу для мониторинга стандартного ввода (т. Е. Наблюдать за ответами стандартного вывода программы C)?Я предполагаю, что мне нужен какой-то цикл опроса, но я не знаю, поддерживается ли / где это в «быстрой» структуре.как gobject.spawn_async?

Ответы [ 2 ]

4 голосов
/ 07 июня 2010

gtk-версия select, glib.io_add_watch, вы можете перенаправить stdin / stdout процесса в / из графического интерфейса, вы можете проверить статью, которую я написал ранее:

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

2 голосов
/ 07 июня 2010

Я не уверен насчет быстрого фреймворка, но в 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

и это позволит вам читать данные из вашего процесса.

...