Отображение вывода в реальном времени в wx.TextCtrl

В настоящее время я создаю утилиту захвата пакетов Wi-Fi в Ubuntu с использованием модулей wxPython, Pcapy и impacket. Я создал графический интерфейс в wxPython и код захвата, ссылающийся на другие модули, однако их объединение оказывается трудным. Как бы идиотично это ни звучало, мне трудно заставить wx.txtctrl отображать захваченные пакеты в графическом интерфейсе, вместо этого они продолжают переходить в командную строку.

Есть ли способ глобального определения textctrl или функции, которая позволяет отображать код на нем?

Если бы кто-то мог пролить свет на проблему, мы были бы очень признательны.

Большое спасибо


person Micheal    schedule 08.04.2011    source источник


Ответы (1)


Если вы хотите перенаправить все, что отправлено в stdout (например, отправленное операторами печати), в свой текстовый элемент управления, вы можете просто заменить sys.stdout своим собственным объектом, имитирующим файловый объект.

Вы можете просто использовать класс StringIO, а затем отправить его накопленное значение к вашему текстовому элементу управления периодически (с использованием таймера). Вы также можете создать подкласс StringIO, переопределить его метод записи и отправить новое содержимое текстового элемента управления сразу после получения каждого отдельного фрагмента текста.

Это не лучшее решение, но похоже на исправление обезьяны.

person fviktor    schedule 08.04.2011
comment
Спасибо за поспешный ответ, я потерпел неудачу в своей попытке использовать это, но это принесло пользу. Большое спасибо - person Micheal; 14.04.2011