Contenu | Rechercher | Menus

Annonce

DVD, clés USB et t-shirts Ubuntu-fr disponibles sur la boutique En Vente Libre

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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