Python GUI (glade) для отображения вывода процесса оболочки - PullRequest
2 голосов
/ 18 декабря 2009

Я пишу приложение на python, которое запускает несколько подпроцессов, используя subprocess.Popen объекты. У меня есть графический интерфейс пользователя glade, и я хочу отображать вывод этих команд (запущенных в subprocess.Popen) в графическом интерфейсе в реальном времени.

Может кто-нибудь предложить способ сделать это? Какой объект поляны мне нужно использовать и как перенаправить вывод?

Ответы [ 3 ]

2 голосов
/ 21 декабря 2009

Вот ссылка, которая также отображает другой способ сделать это.

Я нашел, что это очень проницательно, может быть, кто-то еще может использовать эти советы.

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

1 голос
/ 21 декабря 2009

После долгих чтений и без получения желаемых результатов я нашел другой метод, который работает.

Вот так

#!/usr/bine/env python
import subprocess
import gtk

### Of course, you should have the gui built and know which widgets to use for this.
viewer = self.builder.get_widget('txtview')
proc = subprocess.Popen('ls -al /home'.split(), stdout=subprocess.PIPE, stderr = subprocess.STDOUT)
while True:
    line = proc.stdout.readline()
    viewer.get_buffer().instert_at_cursor(line)
    if not line:
       break
1 голос
/ 18 декабря 2009

glade - это только программа для создания графического интерфейса с помощью gtk, поэтому, когда вы запрашиваете glade объект , возможно, вам следует запросить gtk widget , и в этом случае textbuffer и textview должны Решение или, может быть, TreeView и ListStore. subprocess.Popen имеет stdout и stderr аргументы, которые могут принимать файловый объект. Вы можете создать адаптер для записи в текстовый буфер или добавить элементы в списки

...