То, что я пытаюсь сделать, это просто вывести вывод некоторых команд терминала в виджет wx.TextCtrl. Я решил, что самый простой способ добиться этого — создать собственный класс stdout и перегрузить функцию записи на функцию виджета.
стандартный вывод:
class StdOut(sys.stdout):
def __init__(self,txtctrl):
sys.stdout.__init__(self)
self.txtctrl = txtctrl
def write(self,string):
self.txtctrl.write(string)
И тогда я бы сделал что-то вроде:
sys.stdout = StdOut(createdTxtCtrl)
subprocess.Popen('echo "Hello World!"',stdout=sys.stdout,shell=True)
Что приводит к следующей ошибке:
Traceback (most recent call last):
File "mainwindow.py", line 12, in <module>
from systemconsole import SystemConsole
File "systemconsole.py", line 4, in <module>
class StdOut(sys.stdout):
TypeError: Error when calling the metaclass bases
file() argument 2 must be string, not tuple
Любые идеи по исправлению этого будут оценены.