Q处理完成的信号参数lambda函数



我是在qprocess信号槽环境中处理lambda函数的新手。我对函数的参数有问题。特别是finished((信号。根据文件,它接受两个参数:def finished (exitCode, exitStatus)

我试着这样翻筋斗:

for i, thing in enumerate(something):
self.proc_codificar.append(Qprocess())
#(code here)
self.proc_codificar[i].finished.connect(lambda exitCode, exitStatus, proc=self.proc_codificar[i]: self.codificar_fin(exitCode, exitStatus, proc))
#(code here)

进程完成后,我想知道exitCode、exitStatus和进程本身

def self.proc_codificar(self, exitCode, exitStatus, proc)
print(exitCode)
print(exitStatus)
print(proc)

但这种方式行不通。处理lambda函数的正确方法是什么?

PySide2中QProcess的完成信号过载,因此有两个签名(请参阅文档(:

  • PySide2.QtCore.QProcess.finished(exitCode, exitStatus)

  • PySide2.QtCore.QProcess.finished(exitCode)

注意:第二个方法被标记为不推荐使用,因此在下一个版本中可以删除它。

鉴于上述情况,您必须在连接中注明签名:

for i, thing in enumerate(something):
process = QProcess()
# (code here)
process.finished[int, QProcess.ExitStatus].connect(
lambda exitCode, exitStatus, proc=process: self.codificar_fin(
exitCode, exitStatus, proc
)
)
# (code here)
self.proc_codificar.append(process)

注意:在PyQt5和Qt/C++中,这种情况不会发生。

最新更新