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_()) 
  • python / pyside с использованием настраиваемого виджета в qtreewidget
  • PyQt подключает SIGNAL к нескольким SLOT
  • Предотвращение сбоя ядра Python при запуске приложения в QT
  • qt - pyqt QTableView не заполняется при изменении баз данных
  • Приложение Menubar / System tray с Qt
  • Qt Stylesheets - как удалить мертвое пространство
  • Как реализовать многоязычную поддержку pyqt4
  • Прототипирование Qt / C ++ в Python
  • Python - лучший язык программирования в мире.