【发布时间】:2010-02-19 16:35:41
【问题描述】:
我想要做的只是将一些终端命令的输出打印到 wx.TextCtrl 小部件。我认为最简单的方法是创建一个自定义标准输出类并将写入函数重载到小部件的写入函数。
标准输出类:
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
任何解决此问题的想法将不胜感激。
【问题讨论】: