首先,寫一個信號,用來發射標准輸出作為信號
class EmittingStream(QtCore.QObject): textWritten = QtCore.pyqtSignal(str) #定義一個發送str的信號 def write(self, text): self.textWritten.emit(str(text))
class Ui_MainWindow(QtWidgets.QMainWindow): def __init__(self): super(Ui_MainWindow,self).__init__() self.setupUi(self) self.retranslateUi(self) def setupUi(self, MainWindow): MainWindow.setObjectName("MainWindow") MainWindow.resize(1131, 667) self.centralwidget = QtWidgets.QWidget(MainWindow) self.centralwidget.setObjectName("centralwidget") self.textEdit = QtWidgets.QTextEdit(self.scrollAreaWidgetContents_2) self.textEdit.setGeometry(QtCore.QRect(0, 0, 731, 301)) self.textEdit.setObjectName("textEdit") self.textEdit.setReadOnly(True) #下面將輸出重定向到textEdit中 sys.stdout = EmittingStream(textWritten=self.outputWritten) sys.stderr = EmittingStream(textWritten=self.outputWritten) #接收信號str的信號槽 def outputWritten(self, text): cursor = self.textEdit.textCursor() cursor.movePosition(QtGui.QTextCursor.End) cursor.insertText(text) self.textEdit.setTextCursor(cursor) self.textEdit.ensureCursorVisible()