Pyside:多QProcess中输出到文本编辑(Pyside: Multiple QProcess

2019-10-21 08:46发布

我有一个pyside应用程序调用的exectuable。 我想在数处理异步运行这个可执行文件,并捕捉每一个过程的输出一个QTextEdit。

目前,我有:

def run(self, args, worklist):        

    self.viewer = OutputDialog(self)

    self.procs = []
    for path in worklist:
        final_args = args + path

        p = QtCore.QProcess(self)
        p.readyReadStandardOutput.connect(self.write_process_output)
        self.procs.append(p)
        p.start(self.exe, final_args)

def write_process_output(self):
    for p in self.procs:
        self.viewer.text_edit.append(p.readAllStandardOutput())

这是太笨重,因为每个进程发送“准备就绪”的信号时,它试图让所有进程的输出。

我怎样才能得到输出只是发送信号的过程?

Answer 1:

连接使用的信号lambda使相关处理被传递到槽:

        p.readyReadStandardOutput.connect(
            lambda process=p: self.write_process_output(process))


    def write_process_output(self, process):
        self.viewer.text_edit.append(process.readAllStandardOutput())


文章来源: Pyside: Multiple QProcess output to TextEdit