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 :

StatusTipRole sur item de QComboBox


Sujet :

PyQt Python

  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2013
    Messages : 563
    Points : 460
    Points
    460
    Par défaut StatusTipRole sur item de QComboBox
    Bonsoir,

    je voulais utiliser les Data des items d'un QComboBox pour afficher un message dans la statusBar mais je n'y arrive pas malgré différents tests.

    Alors évidemment, en passant par highlighted et en envoyant le texte à la statusbar ça fonctionne mais je pensais Qt.StatusTipRole devait servir à ça non ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    import sys
     
    from PyQt5 import (QtWidgets, QtCore)
     
    #############################################################################
    class Fenetre(QtWidgets.QMainWindow):
     
        #========================================================================
        def __init__(self, parent=None):
            super().__init__(parent)
            self.resize(300,200)
     
            self.statusbar = QtWidgets.QStatusBar(self)
            self.setStatusBar(self.statusbar)
     
            self.combo = QtWidgets.QComboBox(self)
            self.combo.setMouseTracking(True)
            self.combo.setStatusTip("test")
     
            self.combo.addItem("aaa")
            self.combo.setItemData(0, "111222333", QtCore.Qt.StatusTipRole)
     
            self.combo.addItem("bbb")
            self.combo.setItemData(1, "444555666", QtCore.Qt.StatusTipRole)
     
            self.combo.addItem("ccc")
            self.combo.setItemData(2, "777888999", QtCore.Qt.StatusTipRole)
     
            posit = QtWidgets.QGridLayout()
            posit.addWidget(self.combo, 0, 0)
            self.setLayout(posit)
     
    #############################################################################
    if __name__ == "__main__":
        app = QtWidgets.QApplication(sys.argv)
        fenetre = Fenetre()
        fenetre.show()
        sys.exit(app.exec_())
    Merci à vous et bonne soirée.
    Sous Kubuntu 20.04

  2. #2
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 462
    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 462
    Points : 9 249
    Points
    9 249
    Billets dans le blog
    6
    Par défaut
    Bonjour hizoka,

    Citation Envoyé par hizoka Voir le message
    mais je pensais Qt.StatusTipRole devait servir à ça non ?
    Tu as raison, ce serait logique, mais ça ne marche pas.

    Voilà ce que j'ai fait pour essayer de faire ce que j'ai compris de ton problème.

    Le principe est simple: utiliser le signal "highlighted" pour afficher un message spécifique à chaque index du combobox. Dans l'exemple ci-dessous, j'ai ré-affiché le tip.

    Il y a tout de même une faiblesse de cette méthode: quand on ouvre le petit menu du combobox, le 1er item est sélectionné, mais aucun signal "highlighted" n'est émis, et donc aucun message n'est affiché. Il y a peut-être une astuce que je n'ai pas trouvée?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    import sys
     
    from PyQt5 import (QtWidgets, QtCore)
     
    #############################################################################
    class Fenetre(QtWidgets.QMainWindow):
     
        #========================================================================
        def __init__(self, parent=None):
            super().__init__(parent)
            self.resize(300,200)
     
            self.statusbar = QtWidgets.QStatusBar(self)
            self.setStatusBar(self.statusbar)
     
            self.combo = QtWidgets.QComboBox(self)
            self.combo.setMouseTracking(True)
            self.combo.setStatusTip("test")
            self.combo.highlighted.connect(self.barrestatus)
     
            self.combo.addItem("aaa")
            self.combo.setItemData(0, "111222333", QtCore.Qt.ToolTipRole)
     
            self.combo.addItem("bbb")
            self.combo.setItemData(1, "444555666", QtCore.Qt.ToolTipRole)
     
            self.combo.addItem("ccc")
            self.combo.setItemData(2, "777888999", QtCore.Qt.ToolTipRole)
     
            posit = QtWidgets.QGridLayout()
            posit.addWidget(self.combo, 0, 0)
            self.setLayout(posit)
     
        def barrestatus(self, index):
            msg = self.combo.itemData(index, QtCore.Qt.ToolTipRole)
            self.statusBar().showMessage(msg)
     
    #############################################################################
    if __name__ == "__main__":
        app = QtWidgets.QApplication(sys.argv)
        fenetre = Fenetre()
        fenetre.show()
        sys.exit(app.exec_())
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2013
    Messages : 563
    Points : 460
    Points
    460
    Par défaut
    Salut,

    merci de ta réponse, c'est en effet ce que j'ai fait en attendant de savoir si ça venait de moi ou non

    Bon bah dommage pour le principe...

    Encore merci à toi
    Sous Kubuntu 20.04

Discussions similaires

  1. Oracle Forms 6i trigger sur item
    Par clmisen dans le forum Forms
    Réponses: 5
    Dernier message: 13/07/2009, 14h46
  2. Binding sur "Items" dans le GroupStyle qui ne se met pas à jour si plusieurs items
    Par strat0 dans le forum Windows Presentation Foundation
    Réponses: 2
    Dernier message: 11/05/2009, 10h47
  3. [c#] doubleclick sur item listview
    Par TERRIBLE dans le forum Windows Forms
    Réponses: 3
    Dernier message: 21/05/2007, 10h48
  4. [D7] Treeview: Popup uniquement sur items
    Par dacid dans le forum Delphi
    Réponses: 1
    Dernier message: 08/06/2006, 17h44
  5. PopupMenu sur item de TListBox
    Par nmathon dans le forum Composants VCL
    Réponses: 4
    Dernier message: 17/03/2003, 17h28

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