PyQt connecter un SIGNAL à emplacements multiples
Je suis en train d'apprendre PyQt
de rapid gui programming with python and qt
et actuellement apprentissage Signals
et Slots
.
Ci-dessous, un court extrait de mon code:
self.connect(self.dial, SIGNAL("valueChanged(int)"),self.spinbox.setValue) #1
self.connect(self.dial, SIGNAL("valueChanged(int)"),self.getValue_dial) #2
self.connect(self.spinbox, SIGNAL("valueChanged(int)"),self.dial.setValue)
self.connect(self.spinbox, SIGNAL("valueChanged(int)"),self.getValue_spinbox)
def getValue_dial(self):
print self.dial.value()
def getValue_spinbox(self):
print self.dial.value()
Ce que je suis en train de faire ici, c'est de les appeler 2
FENTES à la fois qui est spinbox.setValue
et getValue_dial
pour dial
objet dès que ValueChanged(int)
signal est émis.
Le code ci-dessus s'exécute correctement sans erreur et print
les valeurs appropriées, ils sont changés.
Maintenant, ma question est la façon décrite ci-dessus approprié de faire appel à plusieurs fentes pour un seul signal.?
Peuvent les deux rapports ci-dessus(1 & 2) être combinés en un seul énoncé.
Voici le lien de mon code complet.
OriginalL'auteur RanRag | 2012-05-18
Vous devez vous connecter pour publier un commentaire.
La façon dont vous le faites est bien. Si vous avez eu assez peu de choses à faire, vous pourriez vous connecter à une nouvelle fonction qui s'occupe de tout pour vous.
Je remarque que dans votre connecté
getValue
fonctions que vous obtenez la valeur directement à partir de l'objet; savez-vous que la valeur est passée en paramètre avec lavalueChanged(int)
signal? Si vous modifiez votregetValue
fonctions d'accepter un paramètre supplémentaire n'est pas nécessaire d'obtenir directement la valeur de l'objet. Bien sûr, vous pourriez finir avec lagetValue
fonction tous ensemble et de l'émission de votre relevé imprimé dans la fonction d'assistance.Aussi, et c'est une préférence, il y a un nouveau style pour les signaux et les slots ce qui peut rendre le code un peu plus facile à lire. Il serait de changer le
lignes ci-dessus pour
Mais pour la question d'origine et pour les deux choses que vous faites je venais tout juste de connecter le signal deux fois plutôt qu'une fonction d'assistance.
ok je comprends quand cadran valeur est modifiée ce signal est émis avec la nouvelle valeur comme argument mais comment sommes-nous en mesure d'accéder à cette valeur directement en tant que variable
value
. Je veux dire ne pas nous avons besoin de quelquesdial
objet d'appels spécifiques.Comment sommes-nous en mesure d'y accéder par le nom de la variablevalue
.QDial hérite de QAbstractSlider. Dans le documentation vous pouvez voir que
valueChanged
passe un int lorsqu'ils sont émis et que l'int est la valeur de la glissière.OriginalL'auteur Gary Hughes
Vous pouvez utiliser une liste pour connecter les deux fentes/fonctions dans une seule instruction:
OriginalL'auteur alexisdm
C'est le moyen le plus approprié, oui. Vous
can't combine
CONNECTER les deux états en un seul.OriginalL'auteur Helmut S