PYQT: Как захватить вывод интерпретатора python и отобразить его в QEditText?

Со ссылкой на сообщение здесь . Может ли кто-нибудь дать мне подробное объяснение того, как добавить вывод инструкции печати в QEditext в PYQT … Я пробовал приведенный выше код, но он был неполным, и я получил:

TypeError: connect() slot argument should be a callable or a signal, not 'QTextEdit' 

В первом файле я написал:

 from PyQt4 import QtCore class EmittingStream(QtCore.QObject): textWritten = QtCore.pyqtSignal(str) def write(self, text): self.textWritten.emit(str(text)) 

В отдельном файле я импортировал первый файл, и он выглядит так:

 from PyQt4 import QtGui, QtCore import os, sys class Window(QtGui.QWidget): def __init__(self): QtGui.QWidget.__init__(self) self.et=QtGui.QTextEdit() layout = QtGui.QVBoxLayout(self) layout.addWidget(self.et) sys.stdout = EmittingStream(textWritten=self.et) def __del__(self): # Restore sys.stdout sys.stdout = sys.__stdout__ def normalOutputWritten(self, text): """Append text to the QTextEdit.""" # Maybe QTextEdit.append() works as well, but this is how I do it: cursor = self.et.textCursor() cursor.movePosition(QtGui.QTextCursor.End) cursor.insertText(text) self.et.setTextCursor(cursor) self.et.ensureCursorVisible() if __name__ == '__main__': import sys app = QtGui.QApplication(sys.argv) window = Window() window.show() sys.exit(app.exec_()) 

Я знаю, что мой код неполный … Какой сигнал я должен добавить?

One Solution collect form web for “PYQT: Как захватить вывод интерпретатора python и отобразить его в QEditText?”

Посмотрите, работает ли это для вас:

 #!/usr/bin/env python #-*- coding:utf-8 -*- from PyQt4 import QtGui, QtCore class MyStream(QtCore.QObject): message = QtCore.pyqtSignal(str) def __init__(self, parent=None): super(MyStream, self).__init__(parent) def write(self, message): self.message.emit(str(message)) class MyWindow(QtGui.QWidget): def __init__(self, parent=None): super(MyWindow, self).__init__(parent) self.pushButtonPrint = QtGui.QPushButton(self) self.pushButtonPrint.setText("Click Me!") self.pushButtonPrint.clicked.connect(self.on_pushButtonPrint_clicked) self.textEdit = QtGui.QTextEdit(self) self.layoutVertical = QtGui.QVBoxLayout(self) self.layoutVertical.addWidget(self.pushButtonPrint) self.layoutVertical.addWidget(self.textEdit) @QtCore.pyqtSlot() def on_pushButtonPrint_clicked(self): print "Button Clicked!" @QtCore.pyqtSlot(str) def on_myStream_message(self, message): self.textEdit.moveCursor(QtGui.QTextCursor.End) self.textEdit.insertPlainText(message) if __name__ == "__main__": import sys app = QtGui.QApplication(sys.argv) app.setApplicationName('MyWindow') main = MyWindow() main.show() myStream = MyStream() myStream.message.connect(main.on_myStream_message) sys.stdout = myStream sys.exit(app.exec_()) 
  • PyQt подключает SIGNAL к нескольким SLOT
  • Загрузка файлов .ui в QtDesigner в PySide
  • PySide Qt-скрипт не запускается из Spyder, а работает из оболочки
  • PySide, Qdate; выполнять конкретную функцию каждый день в определенное время
  • Python PySide и Progress Bar Threading
  • PyQt segfault при попытке получить суб-свойство в QML
  • Как удалить пользовательский QStandardItem в QListView
  • PyQt - Как установить QComboBox в виде таблицы с помощью QItemDelegate
  • Python - лучший язык программирования в мире.