Maison > Article > développement back-end > Comment puis-je transmettre des arguments supplémentaires aux emplacements Qt dans PyQt ?
Dans les applications PyQt, les slots sont des fonctions membres qui sont invoquées lorsqu'un signal est émis. Ces signaux peuvent être émis par divers objets Qt, tels que des boutons ou des widgets. Par défaut, les slots reçoivent les paramètres transmis par le signal. Cependant, il est également possible de transmettre des arguments supplémentaires aux slots.
Considérez le scénario suivant : Vous disposez d'une fonction qui définit une variable nommée DiffP. Vous souhaitez transmettre cette variable à un emplacement connecté à un événement de clic de bouton.
class MyWidget(QtWidgets.QWidget): def __init__(self): [...] self.button.clicked.connect(self.some_slot) def some_slot(self): # Here you want to access the 'DiffP' variable defined in another function
Une façon de transmettre des arguments supplémentaires via les emplacements consiste à utiliser lambda fonctions. Les fonctions Lambda sont des fonctions anonymes qui peuvent être définies en ligne. Vous pouvez créer une fonction lambda qui prend à la fois les paramètres d'emplacement par défaut et les arguments supplémentaires que vous souhaitez transmettre.
class MyWidget(QtWidgets.QWidget): def __init__(self): [...] self.button.clicked.connect(lambda: self.some_slot("DiffP")) def some_slot(self, DiffP): # Here you can access the 'DiffP' variable
Dans cet exemple, la fonction lambda prend l'argument supplémentaire DiffP et le transmet à la fonction some_slot .
Une autre façon de transmettre des arguments supplémentaires via les slots consiste à utiliser la fonction functools.partial. La fonction partielle crée une nouvelle fonction partiellement appliquée avec quelques arguments. Vous pouvez utiliser partial pour créer une fonction qui prend uniquement les paramètres d'emplacement par défaut et transmettre les arguments supplémentaires en tant qu'arguments liés.
from functools import partial class MyWidget(QtWidgets.QWidget): def __init__(self): [...] self.button.clicked.connect(partial(self.some_slot, "DiffP")) def some_slot(self, DiffP): # Here you can access the 'DiffP' variable
Dans cet exemple, la fonction partielle crée une nouvelle fonction qui prend uniquement le paramètre button_or_id et y lie l'argument DiffP. Lorsque le slot est invoqué, la nouvelle fonction sera appelée avec les arguments corrects.
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!