一、布局:
在QtDesigner中或者直接在py文件中写入一个相当于显示程序运行输出结果的文本框控件,例如textEdit,textBrowser,再添加一个按钮来测试启动。
二、写一个信号类,迎来发射标准输出作为信号:
class EmittingStr(QtCore.QObject):
textWritten = QtCore.pyqtSignal(str) #定义一个发送str的信号
def write(self, text):
self.textWritten.emit(str(text))
三、实现代码:
将输出重定向到textBrowser中:
sys.stdout = EmittingStream(textWritten=self.outputWritten)
sys.stderr = EmittingStream(textWritten=self.outputWritten)
四、接受信号str的信号槽:
def outputWritten(self, text):
cursor = self.textBrowser.textCursor()
cursor.movePosition(QtGui.QTextCursor.End)
cursor.insertText(text)
self.textBrowser.setTextCursor(cursor)
self.textBrowser.ensureCursorVisible()
五、运行结果: