Pages : 1
#1 Le 15/11/2021, à 15:08
- DonutMan75
PyQt5 : question sur les Qaction
Re-bonjour,
désolé, j'ai encore une petite question sur PyQt5...
Cette fois-ci il s'agit de syntaxe...
Après avoir créé une toolbar avec :
fen = QMainWindow()
tb = fen.addToolBar('toto')
action1 = Qaction('Ouvrir')
tb.addAction(action1)
action2 = Qaction('Fermer')
tb.addAction(action2)
On peut lier ces deux boutons à un trigger (ici une fonction perso que j'appelle "boutonPresse") de cette façon :
tb.actionTriggered[QAction].connect(boutonPresse)
Le [QAction] me laisse particulièrement pantois... On a l'impression que tb.actionTriggered est une liste (????) et on l'indexe par une classe (QAction) ?????
Pourtant ça compile et ça tourne......
La doc de Qt indique concernant cette méthode :
void QToolBar::actionTriggered(QAction *action)
This signal is emitted when an action in this toolbar is triggered. This happens when the action's tool button is pressed, or when the action is triggered in some other way outside the toolbar. The parameter holds the triggered action.
Exemple minimal (tiré du bouquin cité dans mon précédent post).
from PyQt5.QtWidgets import *
def bp(b):
print('Le buton %s a été pressee...' % b.text())
app = QApplication([])
fen = QMainWindow()
tb_fichier = fen.addToolBar('Fichier')
action1 = QAction('Créer')
tb_fichier.addAction(action1)
action2 = QAction('Ouvrir')
tb_fichier.addAction(action2)
action3 = QAction('Fermer')
tb_fichier.addAction(action3)
tb_fichier.actionTriggered[QAction].connect(bp)
fen.show()
app.exec_()
Merci d'avance pour vos retours !!
D.
Hors ligne