Maison > Article > développement back-end > Comment transmettre des arguments supplémentaires aux emplacements Qt à l'aide des fonctions Lambda ou functools.partial ?
Lors de la connexion de slots dans des applications Qt, il peut être nécessaire de transmettre des arguments supplémentaires à la fonction slot. Cela peut être fait de deux manières : en utilisant les fonctions lambda ou functools.partial.
Les fonctions Lambda vous permettent de transmettre des arguments supplémentaires sous forme d'arguments de mot-clé lors de la connexion d'un signal à un emplacement. Voici la syntaxe générale :
connect(lambda param1, param2, ..., arg1=val1, arg2=value2, ... : fun(param1, param2,... , arg1, arg2, ....))
Où :
Dans votre cas, le code serait 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 fournit une autre méthode pour transmettre des arguments supplémentaires aux fonctions d'emplacement. Il crée une nouvelle fonction liée aux arguments spécifiés. La syntaxe générale est :
partial(fun, args1, arg2, ... )
Où :
Voici comment vous l'utiliseriez dans votre 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 ...
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!