【问题标题】:PyQt4: QProcess readyRead does not always emit correctlyPyQt4:QProcess readyRead 并不总是正确发出
【发布时间】:2017-10-10 17:27:13
【问题描述】:

当我使用 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 的帮助程序。 在这种情况下我应该如何获得输出?

【问题讨论】:

  • 你能试试 PyQt5 的样子吗? Qt4 现在长期无人维护。

标签: python python-2.7 user-interface pyqt qprocess


【解决方案1】:

pyinstaller 可能正在打印到 stderr 而不是 stdout。您可以通过调用(self.process.start(program) 之前)使 QProcess.readAll() 返回两个输出

setProcessChannelMode(QProcess.MergedChannels)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-09
    • 1970-01-01
    • 2017-08-30
    相关资源
    最近更新 更多