functools.partial ou QSignalMapper?
Bonjour,
je développe une IHM qui contient un certain nombre de boutons "parcourir...". Je veux faire la même chose pour chacun de ces boutons: ouvrir un navigateur de fichier, donc appeler la même fonction à chaque fois, avec en argument le nom du widget QPushButton sollicité.
Pour cela, j'ai utilisé functools.partial, qui fonctionne très bien:
Code:
1 2 3 4
| import functools
self.ui.bouton1.clicked.connect(functools.partial(self.choisirRepertoire, 'bouton1'))
self.ui.bouton2.clicked.connect(functools.partial(self.choisirRepertoire, 'bouton2'))
... |
Cependant j'ai vu que Qt avait prévu une classe exprès pour ce genre d'application, QSignalMapper.
Ma première question est: est-ce "propre" d'utiliser functools.partial ou vaut-il mieux utiliser QSignalMapper?
Ma deuxième question concerne le code que j'ai fait pour tester l'utilisation de QSignalMapper:
Code:
1 2 3 4 5 6
| signalMapper = QSignalMapper(self)
signalMapper.setMapping(self.ui.bouton1, 'bouton1')
self.ui.bouton1.clicked.connect(signalMapper.map)
signalMapper.setMapping(self.ui.bouton2, 'bouton2')
self.ui.bouton2.clicked.connect(signalMapper.map)
signalMapper.mapped.connect(self.choisirRepertoire) |
Le programme ne réagit plus lorsque j'appuie sur les boutons (la fonction "choisirRepertoire" n'est pas appelée)... Pouvez-vous m'indiquer ce qui est faux dans mon code?
Merci d'avance.