Maison > développement back-end > Tutoriel Python > Comment connecter correctement les emplacements avec les fonctions Lambda dans PyQt ?

Comment connecter correctement les emplacements avec les fonctions Lambda dans PyQt ?

Linda Hamilton
Libérer: 2024-11-09 02:10:02
original
403 Les gens l'ont consulté

How to Correctly Connect Slots with Lambda Functions in PyQt?

Connexion d'emplacements avec des fonctions Lambda dans PyQt

Lorsque vous essayez de connecter des emplacements avec des fonctions lambda, il est crucial de comprendre comment les arguments sont gérés. Dans l'exemple de code fourni, le problème se pose lors de la connexion de plusieurs boutons en boucle.

Dans les deux premiers boutons, les expressions lambda sont correctement définies et connectées :

button_1.clicked.connect(lambda x:self.button_pushed(1))
button_2.clicked.connect(lambda x:self.button_pushed(2))
Copier après la connexion

Pour les boutons connecté au sein de la boucle, le problème réside dans l'expression lambda :

button.clicked.connect(lambda x=idx: self.button_pushed(x))
Copier après la connexion

Dans ce cas, le signal QPushButton.clicked émet un argument indiquant l'état du bouton. Cependant, lors de la connexion au slot lambda, l'argument facultatif idx est écrasé par l'état du bouton.

Pour résoudre ce problème, la connexion doit être définie comme suit :

button.clicked.connect(lambda state, x=idx: self.button_pushed(x))
Copier après la connexion

Ceci ignore le bouton et transmet la valeur correcte à la méthode bouton_pushed.

En résumé, il est essentiel de faire attention aux arguments passés aux fonctions lambda lorsque fentes de connexion. En gérant correctement les arguments du signal émis, vous pouvez vous assurer que les valeurs correctes sont transmises à vos méthodes.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal