2010-10-27 29 views
8

J'apprends juste PyQt et regarde le mécanisme de Signals and Slots. Je suis un peu déconcerté par la syntaxe verbeuse. Pourquoi est-ce que nous avons:Pourquoi la syntaxe PyQt connect() est-elle si verbeuse?

self.connect(dial, SIGNAL("valueChanged(int)"), spinbox.setValue) 

Je préférerais écrire ce qui suit:

self.connect(dial.valueChanged, spinbox.setValue) 

Quelqu'un peut-il me dire pourquoi la syntaxe de connexion() doit être aussi explicite/bavard?

Répondre

28

Vous pouvez utiliser new style signals de PyQt qui sont moins bavard:

self.connect(dial, SIGNAL("valueChanged(int)"), spinbox.setValue) 

Devient:

dial.valueChanged.connect(spinbox.setValue) 
2

réponse de Luper est beaucoup mieux que celui-ci, mais par souci d'exhaustivité ... La syntaxe "old style" est un anachronisme du monde C++ - jus Regarde la syntaxe avec laquelle les gars doivent travailler!

1

Un moyen encore plus court consiste à attribuer le nom de signal à la fonction dans les mots-clés du constructeur, par ex. QDial(valueChanged=spinbox.setValue). PyQt connectera automatiquement le signal valueChanged() à spinbox.setValue().