Adding Button and Separate Window to Python QProcess Example
Question: I'm trying to use QProcess and read the stdout to a QTextEdit initiated by a
button. How can I adapt [this
example](http://codeprogress.com/python/libraries/pyqt/showPyQTExample.php?index=408&key=QTextEditRedStdOutput)
to do so? Do I have to call a separate class for the QProcess?

    
    
    from PyQt4.QtGui import * 
    from PyQt4.QtCore import * 
    import sys
    
    
    class MyQProcess(QProcess):     
      def __init__(self):    
       #Call base class method 
       QProcess.__init__(self)
       #Create an instance variable here (of type QTextEdit)
       self.edit    = QTextEdit()
       self.edit.setWindowTitle("QTextEdit Standard Output Redirection")
       self.edit.show()   
    
      #Define Slot Here 
      @pyqtSlot()
      def readStdOutput(self):
        self.edit.append(QString(self.readAllStandardOutput()))
    
    
    def main():  
        app     = QApplication(sys.argv)
        qProcess    = MyQProcess()
    
        qProcess.setProcessChannelMode(QProcess.MergedChannels);    
        qProcess.start("ldconfig -v")      
        QObject.connect(qProcess,SIGNAL("readyReadStandardOutput()"),qProcess,SLOT("readStdOutput()"));
    
        return app.exec_()
    
    if __name__ == '__main__':
        main()
    


Answer: Use `QPushButton` to make a button.

Use `QPushButton.clicked.connect` to bind event.

For example:

    
    
    import sys
    
    from PyQt4.QtGui import *
    from PyQt4.QtCore import *
    
    
    class MyWindow(QWidget):
        def __init__(self):
            QWidget.__init__(self)
            self.edit = QTextEdit()
            self.edit.setWindowTitle("QTextEdit Standard Output Redirection")
            self.button = QPushButton('Run ldconfig')
            self.button.clicked.connect(self.onClick)
            layout = QVBoxLayout(self)
            layout.addWidget(self.edit)
            layout.addWidget(self.button)
    
        @pyqtSlot()
        def readStdOutput(self):
            self.edit.append(QString(self.proc.readAllStandardOutput()))
    
        def onClick(self):
            self.proc = QProcess()
            self.proc.start("echo hello")
            self.proc.setProcessChannelMode(QProcess.MergedChannels);
            QObject.connect(self.proc, SIGNAL("readyReadStandardOutput()"), self, SLOT("readStdOutput()"));
    
    def main():
        app = QApplication(sys.argv)
        win = MyWindow()
        win.show()
        return app.exec_()
    
    if __name__ == '__main__':
        main()
    

