簡體   English   中英

PyQt4:QProcess readyRead並不總是正確發出

[英]PyQt4: QProcess readyRead does not always emit correctly

當我使用pyqt運行程序時,每次都無法正確獲取輸出。 這是一個例子:

from PyQt4 import QtCore, QtGui
import sys


class MainWindow(QtGui.QMainWindow):
    def __init__(self):
        QtGui.QWidget.__init__(self)

        program = "ping"

        self.process = QtCore.QProcess()
        self.process.readyRead.connect(self.readoutput)
        self.process.start(program)

    def readoutput(self):
        print str(self.process.readAll())

def main():
    app = QtGui.QApplication(sys.argv)
    ex = MainWindow()
    sys.exit(app.exec_())

if __name__ == '__main__':
    main()

在這種情況下,輸出就是ping命令的助手,正如我所期望的那樣。 雖然如果我將程序變量更改為其他值,則它並不總是有效,例如,如果我這樣做:

program = "pyinstaller"

它不會在控制台中顯示pyinstaller的幫助程序。 在這種情況下,我應該如何獲得輸出?

pyinstaller可能正在打印到stderr而不是stdout。 您可以通過調用(在self.process.start(program)之前)使QProcess.readAll()返回兩個輸出。

setProcessChannelMode(QProcess.MergedChannels)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM