Beim Verbinden von Slots in Qt-Anwendungen kann es erforderlich sein, zusätzliche Argumente an die Slot-Funktion zu übergeben. Dies kann auf zwei Arten erfolgen: mithilfe von Lambda-Funktionen oder functools.partial.
Mit Lambda-Funktionen können Sie zusätzliche Argumente als Schlüsselwortargumente übergeben, wenn Sie ein Signal mit einem Slot verbinden. Das Folgende ist die allgemeine Syntax:
connect(lambda param1, param2, ..., arg1=val1, arg2=value2, ... : fun(param1, param2,... , arg1, arg2, ....))
Wobei:
In Ihrem Fall wäre der Code so sein:
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 bietet eine weitere Methode zum Übergeben zusätzlicher Argumente an Slot-Funktionen. Es erstellt eine neue Funktion, die an die angegebenen Argumente gebunden ist. Die allgemeine Syntax lautet:
partial(fun, args1, arg2, ... )
Wobei:
So würden Sie es in Ihrem verwenden Code:
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 ...
Das obige ist der detaillierte Inhalt vonWie übergebe ich zusätzliche Argumente an Qt-Slots mithilfe von Lambda-Funktionen oder functools.partial?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!