Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 20, 2009 17:14:41

pasaranax
От:
Зарегистрирован: 2009-06-13
Сообщения: 574
Репутация: +  0  -
Профиль   Отправить e-mail  

[PyQt4] вывод из Popen в виджет

У меня есть QTextBrowser, который хочу использовать для вывода программы, запущенной через Popen. Воспользовался методом, предложенным тут и сделал класс:

class Out(object):
def __init__(self, console):
# console - это QTextBrowser или что-то подобное
self.console = console

def write(self, text):
self.console.append(text)
но при запуске Popen(cmd, stdout=out, stderr=out), где out это Out(), вылезает ошибка, что у Out() нет аттрибута fileno. Вопрос в том, как задать fileno или вообще, как правильно сделать свой класс для перенаправления вывода.



Отредактировано (Дек. 20, 2009 17:15:46)

Офлайн

#2 Дек. 20, 2009 18:25:46

poltergeist
От:
Зарегистрирован: 2007-02-28
Сообщения: 522
Репутация: +  0  -
Профиль   Отправить e-mail  

[PyQt4] вывод из Popen в виджет

Для дочернего процесса нужны реальные объекты (пайпы, файлы, …) с реальными файловыми дескрипторами, по дефолту это дескрипторы родительского процесса (stdin, stdout, stderr - они наследуются). А тот случай тут не катит, т.к. там делался хак для функций питона в пределах одного процесса. В данном случае надо работать через пайпы и самостоятельно их читать и выводить в Out. Про то как это делается тут на форуме есть темы, сразу скажу что тут не всё так просто как хотелось бы.



Отредактировано (Дек. 20, 2009 18:26:26)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version