Pyside:多个 QProcess 输出到 TextEdit
Posted
技术标签:
【中文标题】Pyside:多个 QProcess 输出到 TextEdit【英文标题】:Pyside: Multiple QProcess output to TextEdit 【发布时间】:2014-12-05 11:10:20 【问题描述】:我有一个调用可执行文件的 pyside 应用程序。我想在 n 个进程中异步运行这个可执行文件,并在 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())
这太笨拙了,因为每次进程发送“就绪”信号时,它都会尝试获取所有进程的输出。
我怎样才能只为发送信号的进程获取输出?
【问题讨论】:
【参考方案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:多个 QProcess 输出到 TextEdit的主要内容,如果未能解决你的问题,请参考以下文章
无法使用 pyside Qprocess 启动 exe 文件