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 :

QTreeWidgetItem ajout multi icon


Sujet :

PyQt Python

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

    Informations forums :
    Inscription : Février 2013
    Messages : 55
    Par défaut QTreeWidgetItem ajout multi icon
    Bonjour à tous,
    je souhaiterais savoir s'il est possible de mettre plusieurs icônes dans un QTreeWidgetItem " (sur un item)

    actuellement j'utilise ce code pour une icone

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
           DIR_ICON_PATH='XXXXXX\\icone_1.png'
                    icon=QtGui.QIcon(DIR_ICON_PATH)
                    child.setText(1,Lst_Market[t][0])
                    child.setText(2,Lst_Market[t][5])
                    child.setText(3,Lst_Market[t][6])
                    child.setText(4,IN)
                    child.setIcon(4,icon)
    je souhaiterais utiliser un code du genre comme ça si possible

    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
                DIR_ICON_PATH1='XXXXXX\\icone_1.png'
                DIR_ICON_PATH2='XXXXXX\\icone_2.png'
    
    
                    icon=QtGui.QIcon(DIR_ICON_PATH)
                    icon2=QtGui.QIcon(DIR_ICON_PATH2)
                    child.setText(1,Lst_Market[t][0])
                    child.setText(2,Lst_Market[t][5])
                    child.setText(3,Lst_Market[t][6])
                    child.setText(4,IN)
    
                   if IN == "VAL1" : 
                    child.setIcon(4,icon)
                  else : 
                   child.setIcon(4,icon+icon2)
    





    merci de votre aide

  2. #2
    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

    Compte tenu du délai de réponse, j'imagine que le problème est déjà résolu. Mais au cas où...

    On ne peut pas additionner deux "QtGui.QIcon(...)", mais on peut ajouter deux icônes au même QTreeWidgetItem, à condition que ça ne soit pas dans la même colonne.

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

    Informations forums :
    Inscription : Février 2013
    Messages : 55
    Par défaut
    Bonjour tyrtamos merci pour la réponse.

    « À condition que ça ne soit pas dans la même colonne. » c’est-à-dire faire plusieurs colonnes pour recevoir les icones

    EXEMPLE :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
            self.treeW.setColumnCount(4)
            self.treeW.setSelectionBehavior(self.treeW.SelectRows)
            self.treeW.setAllColumnsShowFocus(True)
            self.treeW.setAnimated(True)
            self.treeW.header().setStretchLastSection(True)
            self.treeW.setHeaderLabels(['event','Value','ID',"id_Ev"]) # <- ICI AJOUTE COLLONE POUR ICONE ?

    Ou dans la colonne principale créée des sous colonnes ? (Dans ce cas je ne sais pas trop comment faire)

    si tu as code exemple

  4. #4
    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

    Citation Envoyé par vad92 Voir le message
    si tu as code exemple
    Voilà un petit code test:

    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
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    #!/usr/bin/python
    # -*- coding: utf-8 -*-
     
    import sys
    import os
    from PyQt5 import (QtWidgets, QtGui, QtCore)
     
    #############################################################################
    class TreeWidget(QtWidgets.QTreeWidget):
     
        def __init__(self, parent=None):
            super().__init__(parent)
     
            self.setSelectionMode(QtWidgets.QAbstractItemView.SingleSelection)
     
            self.setAcceptDrops(True)
            self.setDragDropMode(self.InternalMove)
            self.setDragEnabled(True)
            self.setDropIndicatorShown(True)
     
    #############################################################################
    class Fenetre(QtWidgets.QWidget):
     
        def __init__(self, parent=None):
            super().__init__(parent)
     
            self.resize(800, 600)
            self.setWindowTitle("Affiche arbre")
     
            self.tw = TreeWidget(self)
     
            self.tw.setColumnCount(3) # crée 3 colonnes
            self.tw.setHeaderLabels(["Colonne 1", "Colonne 2", "Colonne 3"])
     
            # ajout des données
            item1 = QtWidgets.QTreeWidgetItem(["item1", "", ""])
            self.tw.addTopLevelItem(item1)
     
            item = QtWidgets.QTreeWidgetItem(["item1_1", "", ""])
            item1.addChild(item)
            item = QtWidgets.QTreeWidgetItem(["item1_1_1", "item1_1_1_valeur1", "item1_1_1_valeur2"])
            item1.child(0).addChild(item)
     
            item = QtWidgets.QTreeWidgetItem(["item1_2", "", ""])
            item1.addChild(item)
            item = QtWidgets.QTreeWidgetItem(["item1_2_1", "item1_2_1_valeur1", "item1_2_1_valeur2"])
     
            item1.child(1).setIcon(1, QtGui.QIcon("icone1.png"))
            item1.child(1).setIcon(2, QtGui.QIcon("icone2.png"))
     
            item1.child(1).addChild(item)
     
            item2 = QtWidgets.QTreeWidgetItem(["item2", "", ""])
            self.tw.addTopLevelItem(item2)
     
            item = QtWidgets.QTreeWidgetItem(["item2_1", "", ""])
            item2.addChild(item)
            item = QtWidgets.QTreeWidgetItem(["item2_2", "", ""])
            item2.addChild(item)
            item = QtWidgets.QTreeWidgetItem(["item2_3", "", ""])
            item2.addChild(item)
     
            # positionne le QTreeWidget dans la fenêtre
            layout = QtWidgets.QGridLayout()
            layout.addWidget(self.tw, 0, 0)
            self.setLayout(layout)
     
            # développe l'arborescence
            self.tw.expandAll() 
            #self.tw.expandToDepth(0) # développe seulement le niveau 0
            #self.tw.expandToDepth(1) # développe les niveaux 0 et 1
     
            # ajuste la largeur des colonnes à leur contenu
            for col in range(0, self.tw.columnCount()):
                self.tw.resizeColumnToContents(col)
     
    #############################################################################
    if __name__ == "__main__":
        app = QtWidgets.QApplication(sys.argv)
     
        fen = Fenetre()
        fen.show()
     
        sys.exit(app.exec_())
     
        '''
        ch = """
    item1
        item1_1
            item1_1_1 | item1_1_1_valeur1 | item1_1_1_valeur2
        item1_2
            item1_2_1 | item1_2_1_valeur1 | item1_2_1_valeur2
    item2
        item2_1
        item2_2
        item2_3
    """
        '''
    Ce qui affiche:

    Nom : QTreeWidget_icônes.jpg
Affichages : 365
Taille : 42,9 Ko

    Tu vois comment sur une même ligne (un QTreeWidgetItem), on peut ajouter 2 icônes, à condition qu'ils soient dans 2 colonnes différentes. Bien sûr, si on n'a pas besoin des colonnes 2 et 3 pour afficher du texte, on devrait pouvoir ajuster la largeur de ces colonnes pour que les 2 icônes soient plus proches.

    Une autre solution serait de créer une nouvelle icône qui serait l'assemblage des 2 icônes souhaitées. Cela permettrait de l'afficher sur la colonne 2 uniquement.

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

Discussions similaires

  1. Comment ajouter une icone à une JInternalFrame
    Par wassimb dans le forum AWT/Swing
    Réponses: 11
    Dernier message: 12/07/2006, 15h13
  2. [VB]Ajouter des icones aux boutons de la TOOLBAR
    Par Tyrael62 dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 08/03/2006, 09h41
  3. [TMenuItem] Comment ajouter un icone à chaque Item créé ?
    Par aliwassem dans le forum Composants VCL
    Réponses: 1
    Dernier message: 16/06/2005, 23h41
  4. Ajouter des icones dans vos ressources
    Par Eric Boisvert dans le forum EDI
    Réponses: 1
    Dernier message: 24/05/2005, 20h02
  5. Ajouter une icone dans la barre des titres (cme emule)
    Par Crisanar dans le forum Windows
    Réponses: 7
    Dernier message: 12/12/2004, 12h08

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