在 Qt 应用程序中连接槽时,可能需要向槽函数传递额外参数。这可以通过两种方式完成:使用 lambda 函数或 functools.partial。
Lambda 函数允许您在将信号连接到插槽时传递额外参数作为关键字参数。以下是一般语法:
connect(lambda param1, param2, ..., arg1=val1, arg2=value2, ... : fun(param1, param2,... , arg1, arg2, ....))
其中:
在您的情况下,代码将be:
self.buttonGroup.buttonClicked['int'].connect(lambda i: self.input(i, "text")) @pyqtSlot(int) def input(self, button_or_id, DiffP): # Use the extra argument `DiffP` in the slot function ...
Functools.partial 提供了另一种将额外参数传递给槽函数的方法。它创建一个绑定到指定参数的新函数。一般语法为:
partial(fun, args1, arg2, ... )
其中:
以下是您如何在您的代码:
from functools import partial ... self.buttonGroup.buttonClicked['int'].connect(partial(self.input, "text")) @pyqtSlot(int) def input(self, DiffP, button_or_id): # `DiffP` will be passed as the first argument to the slot function ...
以上是如何使用 Lambda 函数或 functools.partial 将额外参数传递给 Qt 插槽?的详细内容。更多信息请关注PHP中文网其他相关文章!