Ubuntu быстро (python/gtk) – как контролировать стандартный ввод?

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

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

Или перенаправление не подходит - я должен смотреть на что-то вроде gobject.spawn_async?


person neil    schedule 07.06.2010    source источник


Ответы (2)


Версия select для gtk — это glib.io_add_watch, вы можете захотеть перенаправить stdin/stdout процесса в/из GUI, вы можете проверить статью, которую я написал некоторое время назад:

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

person pygabriel    schedule 07.06.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

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

person Wayne Werner    schedule 07.06.2010