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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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.