PyQt使用QProcess调用子进程并获取输出

发布于:2018-01-13 | 分类:python/vba/cpp


QProcess()类可以创建子进程执行外部程序,使用readyReadStandardOutput信号监听子进程中的标准输出事件,使用readAllStandardOutput()读取子进程标准输出;对标准错误的操作同理。本文基于Python3和PyQt5示例以上流程的代码。

创建QProcess并关联监听事件

self.process = QProcess()
self.process.readReadStandardOutput.connect(self.addStdOut)
self.process.readReadStandardError.connect(self.addStdErr)
self.process.finished.connect(self.stop)

启动子程序

self.process.start("command_line")

响应槽函数

def addStdOut(self):
    output = bytes(self.process.readAllStandardOutput()).decode()

readAllStandardOutput()返回的是Qt的QbyteArray类型数据,对应Python的bytes,二者可以直接转换。然后使用bytes类型对象的decode()方法转为python的str