Bonjour à tous
Concernant le mécanisme signal/slot de PyQt, je suis peu à peu passé de l'ancienne version (Signal) à la nouvelle (pyqtSignal). Toutefois tout ne me plait pas forcément dans cette façon de procéder...
Prenons par exemple un widget personnalisé qui va envoyer un signal "toto" et connectons-le à un widget parent.
Dans l'ancienne version, cela se faisait plus ou moins de cette façon
Code python : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 class myWidget(QWidget): def action(): self.emit(SIGNAL("toto"))
Et la connection:
Code python : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 wid=myWidget() QObject.connect( wid, SIGNAL("toto"), traitementToto, ) def traitementToto(): ...
Avec le pyqtSignal, cela se fait maintenant de cette façon:
Code python : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 class myWidget(QWidget): sigToto=pyqtSignal() def action(): self.sigToto.emit()
Et la connection:
Code python : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 wid=myWidget() wid.sigToto.connect(traitementToto) def traitementToto(): ...
Alors effectivement l'écriture de la connection dans la nouvelle version devient plus aisée. Mais on ne peut plus créer de signal "en live" dans notre objet. On est obligé de créer une variable statique, bien repérer son nom pour pas la louper à la connection et etc etc etc. Bref un peu de contraintes en plus.
Donc j'aurais aimé avoir vos avis sur cette nouvelle façon de procéder.
Merci à tous.
Partager