【发布时间】:2014-03-23 04:07:22
【问题描述】:
我无法从 QThread 获取(打印)错误信息。我有一个Worker(QThread):
class Worker(QThread):
def __init__(self, parent=None):
QThread.__init__(self, parent)
def run(self):
# do some heavy work here
print 1 # 1 is printed in my OutputWidget
print a # a is not defined and it should print an error
如果我只运行新文件中的最后一行 (print a)(未定义 a),我会收到一个错误(这是正确且预期的):
Traceback (most recent call last):
File "C:\...\output_widget\output_from_qthread_V2.py", line 1, in run
print a
NameError: global name 'a' is not defined
输出小部件:
import sys
from PyQt4 import QtGui
from PyQt4 import QtCore
from output_widget_ui import Ui_Form
class TextOutputSignal(QtCore.QObject):
textWritten = QtCore.pyqtSignal(str)
def write(self, text):
self.textWritten.emit(str(text))
class OutputWidget(QtGui.QWidget):
def __init__(self, parent=None, flags=0):
super(OutputWidget, self).__init__(parent)
sys.stdout = TextOutputSignal(textWritten=self.normalOutputWritten)
self.ui = Ui_Form()
self.ui.setupUi(self)
def __del__(self):
# Restore sys.stdout
sys.stdout = sys.__stdout__
def normalOutputWritten(self, text):
cursor = self.ui.textOutputWidget.textCursor()
cursor.movePosition(QtGui.QTextCursor.End)
cursor.insertText(text)
self.ui.textOutputWidget.ensureCursorVisible()
我想知道为什么 OutputWidget 和控制台(使用 eclipse)都没有打印错误?我该如何解决这个问题?
【问题讨论】: