QProcess完成信号参数lambda函数
QProcess finished signal parameters lambda function
我不熟悉在 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 的完成信号过载,因此有 2 个签名(参见 docs):
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++ 中不会发生这种情况。
我不熟悉在 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 的完成信号过载,因此有 2 个签名(参见 docs):
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++ 中不会发生这种情况。