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() 到 return 两个输出
当我使用 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)
之前)