IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PyQt Python Discussion :

Signal triggered d'un QAction [QtGui]


Sujet :

PyQt Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mars 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2012
    Messages : 17
    Par défaut Signal triggered d'un QAction
    Bonjour,

    Y-a-t-il un moyen de déterminer quel objet à déclenché le signal triggered d'un QAction ?
    Mon action est associée à une barre d'outil et deux TreeView.
    J'aurais souhaité centraliser la gestion en paramétrant la valeur à traiter.

    Merci par avance pour vos lumières.

  2. #2
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par défaut
    Une seule fonction centralisant les signaux de diverses actions ?

    Perso, j'utiliserai lambda:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
            ...
            self.actionZoom_out.triggered.connect(lambda: self.set_zoom(-1))
            self.actionZoom_in.triggered.connect(lambda: self.set_zoom(1))
            ...
     
        def set_zoom(self, val):
            self.zoom += self.zoom_step * val
            ...


    Quoique, en général, je finisse par regretter d'avoir voulu faire des économies de fonction et je vire ces horreurs de lambda. Mais ça c'est une opinion personnelle.

  3. #3
    Expert confirmé
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 486
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Au lieu de lambda, on peut aussi utiliser 'partial' du module functools. Le principe est le même: passer une valeur pour pouvoir tester ce qui a déclenché le signal.

    Un exemple ici: http://eli.thegreenplace.net/2011/04...-to-pyqt-slot/.

  4. #4
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par défaut
    Ha, je ne connaissais pas, merci.


    J'ai aussi enlevé du code la variable de la lambda qui était inutile et ne devait sa présence qu'à un copier-coller non réfléchit.

  5. #5
    Membre averti
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mars 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2012
    Messages : 17
    Par défaut
    En fait, il n'y a qu'un seul objet QAction qui est associé à une toolbar et deux treeview par le biais de la méthode addAction.
    Du coup, avant l'exécution impossible de savoir quelle donnée contextuelle est associée. Il me faudrait pouvoir déterminer dans la méthode appelée par le QAction depuis quel objet elle a été invoquée.
    Plus schématiquement j'ai ça :
    QAction : Dossier favori.
    TreeView1 : Arborescence principale
    TreeView2 : Arborescence secondaire
    Toolbar.
    Si j'invoque l'action via la toolbar ou via TreeView1, je vais prendre le dossier de l'arborescence principale.
    Si j'invoque l'action via TreeView2, je prends le dossier de l'arborescence secondaire.

  6. #6
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par défaut
    Un exemple de code serait bienvenu.

    Je ne saisis pas trop bien l'association avec les QTreeView.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Électronique] Signal trigger pour oscilloscope
    Par sofiaaa dans le forum Embarqué
    Réponses: 0
    Dernier message: 18/03/2015, 22h02
  2. [QtCore] Récupérer l'action avec un signal triggered()
    Par bastou93 dans le forum PyQt
    Réponses: 10
    Dernier message: 20/02/2014, 14h02
  3. trigger me signal une erreur lors de son exécution
    Par scofild20 dans le forum SQL
    Réponses: 7
    Dernier message: 02/05/2009, 14h22
  4. [VB6] [MDI] Signaler la fermeture d'une fille à la mère
    Par cpri1shoot dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 13/04/2004, 08h57
  5. [Comparatif] Procédures stockées, triggers, etc.
    Par MCZz dans le forum Décisions SGBD
    Réponses: 3
    Dernier message: 28/08/2002, 12h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo