Si je veux ajouter 10 qpushbutton à la fois: comme indiqué dans le défaut (BTNClick). p> p>
4 Réponses :
Lorsque vous êtes dans une fente, vous pouvez utiliser la méthode de l'expéditeur () (appelez simplement Self.sender ()) et vous recevrez une référence à l'objet, à partir duquel un signal a été émis. ici est la documentation à ce sujet. P>
Je serais sous-classe Un moyen légèrement plus pythonique de cela pourrait définir le comportement dans la classe, comme: p> qpushbutton code> et définir mon propre expéditeur et emplacement. La méthode
qobject.sender () code> est tentante, mais cela me donne les Heebie-Jeebies.
Sérieusement, il n'y a rien de mal avec l'expéditeur (). Je l'ai utilisé beaucoup et ça marche très bien. Cependant, il faut utiliser des soins. J'utilise habituellement votre méthode lorsque vous signalez l'externe (c'est-à-dire à d'autres objets) mais l'expéditeur () lorsque vous acheminez des signaux dans une classe.
Il n'y a peut-être rien de mal avec .sender (), mais comme la documentation le dit, cela "violent le principe de modularité orienté objet". Ce qui ne serait pas la mort de personne, certes. Je pourrais être tenté de l'utiliser en tant que correction "rapide" et sale ". Mais Python rend si facile de faire mieux et plus propre, il est probablement préférable de le faire correctement, à long terme.
Comme le dit GruszCsy, il y a soi-même. expéditeur () ( à QObject) pour obtenir cette information exacte. P>
Il y a aussi le QsignalMapper classe qui fournit un mappage de niveau supérieur de plusieurs expéditeurs de signal à une fente. Il aide les cas de base de la cartographie des signaux de plusieurs-un ou des machines à sous. P>
suggestion de Chris B sur la définition d'une nouvelle fente qui transmet l'expéditeur sous forme de paramètre est un peu plus compliquée, mais plus propre en termes de structure de programme et de séparation entre les classes. J'ai tendance à utiliser cette méthode lorsque la fente cible est dans un autre objet. Pour la cartographie dans la fente privée d'une classe, l'expéditeur () est à la fois propre et bien approprié, imo. P>
Voici une petite application démontrant une solution possible: Veuillez apprécier :) p> p>