Maison  >  Article  >  développement back-end  >  Comment transmettre des arguments supplémentaires aux emplacements Qt à l'aide des fonctions Lambda ou functools.partial ?

Comment transmettre des arguments supplémentaires aux emplacements Qt à l'aide des fonctions Lambda ou functools.partial ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-19 10:17:02568parcourir

How to Pass Extra Arguments to Qt Slots Using Lambda Functions or functools.partial?

Passer des arguments supplémentaires via Connect

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.

Utilisation des fonctions Lambda

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ù :

  • param1, param2, ... : Paramètres reçus par le signal
  • arg1, arg2, ... : Paramètres supplémentaires transmis à la fonction slot

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
    ...

Utilisation de Functools.Partial

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ù :

  • fun : Fonction d'emplacement cible
  • args1, arg2, ... : Arguments supplémentaires transmis au nouveau function

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn