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:
Cependant j'ai vu que Qt avait prévu une classe exprès pour ce genre d'application, QSignalMapper.
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')) ...
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:
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?
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)
Merci d'avance.
Partager