title: Redirect console output to pyqt5 gui in real time
body: <p>I want to redirect the console output of python program in <strong>real time</strong> in a gui using PyQt5</p>
  <p>I mean that in every output the python program do, the gui display this output instantly</p>
  <p>the code I used only display the logs after finishing the whole program and the real time issue is not solved</p>
  <p>can you help me</p>
  <p>below my code:</p>
  <pre><code>from PyQt5 import QtGui,QtCore
  from PyQt5 import uic
  from PyQt5.QtWidgets import *
  from PyQt5.QtCore import *
  from PyQt5 import QtGui
  from PyQt5.QtGui import QPixmap
  
  class gui(QMainWindow):
      def __init__(self):
          super(gui, self).__init__()
          self.initUI()
  
      def dataReady(self):
          cursor = self.output.textCursor()
          cursor.movePosition(cursor.End)
          cursor.insertText(str(self.process.readAll()))
          self.output.ensureCursorVisible()
  
      def callProgram(self):
          # run the process
          # `start` takes the exec and a list of arguments
          self.process.start('python',['Robot.py'])
  
      def initUI(self):
          # Layout are better for placing widgets
          layout =  QHBoxLayout()
          self.runButton =  QPushButton('Run')
          self.runButton.clicked.connect(self.callProgram)
  
          self.output =  QTextEdit()
          self.setGeometry(100, 60, 1000, 800)
          layout.addWidget(self.output)
          layout.addWidget(self.runButton)
  
          centralWidget =  QWidget()
          centralWidget.setLayout(layout)
          self.setCentralWidget(centralWidget)
  
          # QProcess object for external app
          self.process = QtCore.QProcess(self)
          # QProcess emits `readyRead` when there is data to be read
          self.process.readyRead.connect(self.dataReady)
  
          # Just to prevent accidentally running multiple times
          # Disable the button when process starts, and enable it when it finishes
          self.process.started.connect(lambda: self.runButton.setEnabled(False))
          self.process.finished.connect(lambda: self.runButton.setEnabled(True))
  
  
  #Function Main Start
  def main():
      app =QApplication(sys.argv)
      ui=gui()
      ui.show()
      sys.exit(app.exec_())
  #Function Main END
  
  if __name__ == '__main__':
      main() ```
  </code></pre>