擅长:python、mysql、java
<p>您可以使用StringIO对象作为标准输出,而不是编写自己的statusWrapper类。比如:</p>
<pre><code>def __init__(self, widget):
QtCore.QThread.__init__(self)
def run(self):
real_stdout = sys.stdout
sys.stdout = StringIO.StringIO()
self.runModule()
label_text = sys.stdout.getvalue()
sys.stdout = real_stdout
</code></pre>
<p>恢复stdout的原始值对您的理智很重要。还要注意的是,在多线程环境中,这不会达到预期的效果。另外请注意,delnan肯定是正确的,替换stdout是一种令人难以置信的黑客方式。你知道吗</p>
<p>如果您希望在每次模块打印输出时更新标签(有点像穷人的状态指示器),那么也有更好的方法可以做到这一点-您可以用调用回调函数来替换打印,在导入时在模块中设置回调函数,或者类似的方法。你知道吗</p>