[PyQt] [TreeWidget] Text and/or image over a node

projetmbc projetmbc at club-internet.fr
Sun Apr 5 21:08:13 BST 2009


Hello,
I would like to show a text or a little picture (and why not the both at 
the same time) when the mouse is over a node of a TreeWidget. How can I 
try to do that ?

Thanks a lot.
Christophe.
-------------- next part --------------
# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'C:\Program Files\EasyPHP 2.0b1\www\Python 07-2008\DebuterAvecPythonEtPyQT\CodesProjets\03-Proj3_VueArborescente\dial_Projet3.ui     '
#
# Created: Tue Jul 29 23:37:30 2008
#      by: PyQt4 UI code generator 4.3.3
#
# WARNING! All changes made in this file will be lost!

from PyQt4 import QtCore, QtGui

class Ui_dial_Projet3(object):
    def setupUi(self, dial_Projet3):
        dial_Projet3.setObjectName("dial_Projet3")
        dial_Projet3.resize(QtCore.QSize(QtCore.QRect(0,0,520,390).size()).expandedTo(dial_Projet3.minimumSizeHint()))
        dial_Projet3.setAutoFillBackground(True)

        self.treeWidget = QtGui.QTreeWidget(dial_Projet3)
        self.treeWidget.setGeometry(QtCore.QRect(270,40,240,340))
        self.treeWidget.setObjectName("treeWidget")

        self.textUtilisateur = QtGui.QTextEdit(dial_Projet3)
        self.textUtilisateur.setGeometry(QtCore.QRect(10,40,240,340))
        self.textUtilisateur.setObjectName("textUtilisateur")

        self.lineTitre_1 = QtGui.QLineEdit(dial_Projet3)
        self.lineTitre_1.setEnabled(False)
        self.lineTitre_1.setGeometry(QtCore.QRect(10,10,241,20))

        palette = QtGui.QPalette()

        brush = QtGui.QBrush(QtGui.QColor(0,0,0))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Active,QtGui.QPalette.WindowText,brush)

        brush = QtGui.QBrush(QtGui.QColor(0,0,0))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Active,QtGui.QPalette.Dark,brush)

        brush = QtGui.QBrush(QtGui.QColor(0,0,0))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Active,QtGui.QPalette.Text,brush)

        brush = QtGui.QBrush(QtGui.QColor(0,0,0))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Active,QtGui.QPalette.ButtonText,brush)

        brush = QtGui.QBrush(QtGui.QColor(255,255,255))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Active,QtGui.QPalette.Base,brush)

        brush = QtGui.QBrush(QtGui.QColor(255,255,255))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Active,QtGui.QPalette.Window,brush)

        brush = QtGui.QBrush(QtGui.QColor(0,0,0))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Inactive,QtGui.QPalette.WindowText,brush)

        brush = QtGui.QBrush(QtGui.QColor(0,0,0))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Inactive,QtGui.QPalette.Dark,brush)

        brush = QtGui.QBrush(QtGui.QColor(0,0,0))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Inactive,QtGui.QPalette.Text,brush)

        brush = QtGui.QBrush(QtGui.QColor(0,0,0))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Inactive,QtGui.QPalette.ButtonText,brush)

        brush = QtGui.QBrush(QtGui.QColor(255,255,255))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Inactive,QtGui.QPalette.Base,brush)

        brush = QtGui.QBrush(QtGui.QColor(255,255,255))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Inactive,QtGui.QPalette.Window,brush)

        brush = QtGui.QBrush(QtGui.QColor(0,0,0))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Disabled,QtGui.QPalette.WindowText,brush)

        brush = QtGui.QBrush(QtGui.QColor(0,0,0))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Disabled,QtGui.QPalette.Dark,brush)

        brush = QtGui.QBrush(QtGui.QColor(0,0,0))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Disabled,QtGui.QPalette.Text,brush)

        brush = QtGui.QBrush(QtGui.QColor(0,0,0))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Disabled,QtGui.QPalette.ButtonText,brush)

        brush = QtGui.QBrush(QtGui.QColor(255,255,255))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Disabled,QtGui.QPalette.Base,brush)

        brush = QtGui.QBrush(QtGui.QColor(255,255,255))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Disabled,QtGui.QPalette.Window,brush)
        self.lineTitre_1.setPalette(palette)

        font = QtGui.QFont()
        font.setWeight(50)
        font.setBold(False)
        self.lineTitre_1.setFont(font)
        self.lineTitre_1.setAlignment(QtCore.Qt.AlignCenter)
        self.lineTitre_1.setObjectName("lineTitre_1")

        self.lineTitre_2 = QtGui.QLineEdit(dial_Projet3)
        self.lineTitre_2.setEnabled(False)
        self.lineTitre_2.setGeometry(QtCore.QRect(270,10,241,20))

        palette = QtGui.QPalette()

        brush = QtGui.QBrush(QtGui.QColor(0,0,0))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Active,QtGui.QPalette.WindowText,brush)

        brush = QtGui.QBrush(QtGui.QColor(0,0,0))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Active,QtGui.QPalette.Dark,brush)

        brush = QtGui.QBrush(QtGui.QColor(0,0,0))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Active,QtGui.QPalette.Text,brush)

        brush = QtGui.QBrush(QtGui.QColor(0,0,0))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Active,QtGui.QPalette.ButtonText,brush)

        brush = QtGui.QBrush(QtGui.QColor(255,255,255))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Active,QtGui.QPalette.Base,brush)

        brush = QtGui.QBrush(QtGui.QColor(255,255,255))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Active,QtGui.QPalette.Window,brush)

        brush = QtGui.QBrush(QtGui.QColor(0,0,0))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Inactive,QtGui.QPalette.WindowText,brush)

        brush = QtGui.QBrush(QtGui.QColor(0,0,0))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Inactive,QtGui.QPalette.Dark,brush)

        brush = QtGui.QBrush(QtGui.QColor(0,0,0))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Inactive,QtGui.QPalette.Text,brush)

        brush = QtGui.QBrush(QtGui.QColor(0,0,0))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Inactive,QtGui.QPalette.ButtonText,brush)

        brush = QtGui.QBrush(QtGui.QColor(255,255,255))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Inactive,QtGui.QPalette.Base,brush)

        brush = QtGui.QBrush(QtGui.QColor(255,255,255))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Inactive,QtGui.QPalette.Window,brush)

        brush = QtGui.QBrush(QtGui.QColor(0,0,0))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Disabled,QtGui.QPalette.WindowText,brush)

        brush = QtGui.QBrush(QtGui.QColor(0,0,0))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Disabled,QtGui.QPalette.Dark,brush)

        brush = QtGui.QBrush(QtGui.QColor(0,0,0))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Disabled,QtGui.QPalette.Text,brush)

        brush = QtGui.QBrush(QtGui.QColor(0,0,0))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Disabled,QtGui.QPalette.ButtonText,brush)

        brush = QtGui.QBrush(QtGui.QColor(255,255,255))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Disabled,QtGui.QPalette.Base,brush)

        brush = QtGui.QBrush(QtGui.QColor(255,255,255))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Disabled,QtGui.QPalette.Window,brush)
        self.lineTitre_2.setPalette(palette)

        font = QtGui.QFont()
        font.setWeight(50)
        font.setBold(False)
        self.lineTitre_2.setFont(font)
        self.lineTitre_2.setAlignment(QtCore.Qt.AlignCenter)
        self.lineTitre_2.setObjectName("lineTitre_2")

        self.retranslateUi(dial_Projet3)
        QtCore.QMetaObject.connectSlotsByName(dial_Projet3)

    def retranslateUi(self, dial_Projet3):
        dial_Projet3.setWindowTitle(QtGui.QApplication.translate("dial_Projet3", "Projet n°3", None, QtGui.QApplication.UnicodeUTF8))
        self.treeWidget.headerItem().setText(0,QtGui.QApplication.translate("dial_Projet3", "1", None, QtGui.QApplication.UnicodeUTF8))
        self.lineTitre_1.setText(QtGui.QApplication.translate("dial_Projet3", "Votre table des matières avec les balises", None, QtGui.QApplication.UnicodeUTF8))
        self.lineTitre_2.setText(QtGui.QApplication.translate("dial_Projet3", "Arbre de la table des matières", None, QtGui.QApplication.UnicodeUTF8))



if __name__ == "__main__":
    import sys
    app = QtGui.QApplication(sys.argv)
    dial_Projet3 = QtGui.QDialog()
    ui = Ui_dial_Projet3()
    ui.setupUi(dial_Projet3)
    dial_Projet3.show()
    sys.exit(app.exec_())

-------------- next part --------------
# -*- coding: utf-8 -*-
#!/usr/bin/env python
# Les lignes ci-dessus sont très importantes :
#    1°) La 1ère ligne indique le codage du fichier Python.
#    2°) La 2nde ligne est indispensable pour un bon fonctionnement sous Linux.

# PRESENTATION : ce script montre comment lier un  texte ayant un contenu que nous allons analyser
# à un arbre représentant la struture hiérarchique de ce texte.
# AUTEUR : BAL Christophe
# MAIL : projetmbc at club.fr
# SITE : http://christophe_bal.club.fr/index.php
# DATE DE CREATION : 28/07/2008
# DERNIERE AELIORATION : 27/10/2008
# 
# TEST(S) EFFECTUE(S) : programme testé sous Windows XP avec succès.

# On importe les bibliothèques que nous allons utiliser.
import sys
from PyQt4 import QtCore, QtGui
# On importe notre boîte de dialogue.
from dial_Projet3 import Ui_dial_Projet3


# # # # # # # # # # # # # # # # # # # # # #
# Comportement de la boîte de dialogue.   DEBUT

class dial_Projet3(QtGui.QDialog, Ui_dial_Projet3):
    def __init__(self):
        QtGui.QDialog.__init__(self)
        Ui_dial_Projet3.__init__(self)
        self.setupUi(self)

# On met un texte brut type qui aidera l'utilisateur à faire ses propres tables tout seul.
        self.texte_Type = """Intro
Chap I
>Para 1
>>Partie A
>>Partie B
>Para 2
Chap II
Conclusion"""
        self.textUtilisateur.setText(self.texte_Type)

# On crée à la main le tableau pour garder en mémoire la table des matières.
        self.tablo_tabMat_Memo = []

        self.tablo_tabMat_Memo.append('Intro')

        tablo_Para = []
        tablo_Para.append('Chap I')
        tablo_Partie = []
        tablo_Partie.append('Para 1')
        tablo_Partie.append('Partie A')
        tablo_Partie.append('Partie B')
        tablo_Para.append(tablo_Partie)
        tablo_Para.append('Para 2')
        self.tablo_tabMat_Memo.append(tablo_Para)

        self.tablo_tabMat_Memo.append('Chap II')

        self.tablo_tabMat_Memo.append('Conclusion')

# On continue à remplir l'arbre à la main.
# PETITE NOUVEAUTE : nous allons faire en sorte que l'arbre soit totalement déployé  dès l'affichage(voir le commentaire ci-dessous).
        self.treeWidget.clear()
        self.treeWidget.setColumnCount(1)
        self.treeWidget.setHeaderLabels(["Sommaire"])
        self.treeWidget.setItemsExpandable(True)

        tabNiv_1 = QtGui.QTreeWidgetItem(self.treeWidget, ["Intro"])
        tabNiv_1.setIcon(0, QtGui.QIcon('Images/im_1.png'))

        tabNiv_1 = QtGui.QTreeWidgetItem(self.treeWidget, ["Chap I"])
        tabNiv_1.setIcon(0, QtGui.QIcon('Images/im_1.png'))
# La ligne suivante permet "d'ouvrir" le noeud Para 1. On fait de même avec tous les noeuds de Chap I, puis avec Chap I lui-même.
        self.treeWidget.expandItem(tabNiv_1)
        tabNiv_2 = QtGui.QTreeWidgetItem(tabNiv_1, ["Para 1"])
        tabNiv_2.setIcon(0, QtGui.QIcon('Images/im_2.png'))
        self.treeWidget.expandItem(tabNiv_2)
        tabNiv_3 = QtGui.QTreeWidgetItem(tabNiv_2, ["Partie A"])
        tabNiv_3.setIcon(0, QtGui.QIcon('Images/im_3.png'))
        self.treeWidget.expandItem(tabNiv_3)
        tabNiv_3 = QtGui.QTreeWidgetItem(tabNiv_2, ["Partie B"])
        tabNiv_3.setIcon(0, QtGui.QIcon('Images/im_3.png'))
        self.treeWidget.expandItem(tabNiv_3)
        tabNiv_2 = QtGui.QTreeWidgetItem(tabNiv_1, ["Para 2"])
        tabNiv_2.setIcon(0, QtGui.QIcon('Images/im_2.png'))
        self.treeWidget.expandItem(tabNiv_2)

        tabNiv_1 = QtGui.QTreeWidgetItem(self.treeWidget, ["Chap II"])
        tabNiv_1.setIcon(0, QtGui.QIcon('Images/im_1.png'))

        tabNiv_1 = QtGui.QTreeWidgetItem(self.treeWidget, ["Conclusion"])
        tabNiv_1.setIcon(0, QtGui.QIcon('Images/im_1.png'))

# On définit la connection liée au changement du contenu du QTextEdit.
        self.connect(self.textUtilisateur, QtCore.SIGNAL("textChanged()"), self.chgtTexte)
        self.connect(self.treeWidget, QtCore.SIGNAL("itemClicked(QTreeWidgetItem*,int)"), self.clicNoeud)

# On définit la connection liée au menu contextuel.
        self.treeWidget.setContextMenuPolicy(QtCore.Qt.CustomContextMenu) 
        self.connect(self.treeWidget, QtCore.SIGNAL("customContextMenuRequested(const QPoint &)"), self.menuContextTree)
 
# Menu Contextuel
# Cf. bas de la page : 
# http://www.nabble.com/Context-menu-on-items-in-QTreeView-td19981837.html 
#
# http://www.riverbankcomputing.com/static/Docs/PyQt4/html/qwidget.html#setContextMenuPolicy 
# http://www.riverbankcomputing.com/static/Docs/PyQt4/html/qt.html#ContextMenuPolicy-enum 
# http://www.riverbankcomputing.com/static/Docs/PyQt4/html/qwidget.html#customContextMenuRequested 
 
    def menuContextTree(self, point):
# On récupère les infos sur l'item sélectionné.
        index = self.treeWidget.indexAt(point)
        if not index.isValid(): 
            return 
#        print index.text(0)
        item = self.treeWidget.itemAt(point) 
        name = item.text(0)
 
# On définie le menu contextuel.
        menu=QtGui.QMenu(self)
        action=menu.addAction("Souris au-dessus de")
        action=menu.addAction(name)
        menu.addSeparator()
        action_1=menu.addAction("Choix 1")
        action_2=menu.addAction("Choix 2")
        action_3=menu.addAction("Choix 3")
# Il reste à lier chaque clic sur le menu à une action réelle via un SLOT.
# Voir ici : http://www.developpez.net/forums/d600225/autres-langages/python-zope/gui/pyqt/communiquer-graphicview-vers-classes-application/#post3551618 .
        menu.exec_(QtGui.QCursor.pos())



# Info récupérée sur le forum suivant : .
    def clicNoeud(self,noeudClic):
# La méthode ci-dessous a ses limites car il faut connaître la profondeur de l'arbre.
        par_1=''
        par_2=''

        test_1 = noeudClic.parent()
        if test_1 != None:
            par_1 = str(noeudClic.parent().text(0))

            test_2 = test_1.parent()
            if test_2 != None:
                par_2 = str(test_2.parent())

        if par_2!='':
            print "Clic sur une partie-Titre de la partie :"
            print "          " + str(noeudClic.text(0))
        elif par_1!='':
            print "Clic sur un paragraphe-Titre du paragraphe :"
            print "          " + str(noeudClic.text(0))
        else:
            print "Clic sur un chapitre-Titre du chapitre :"
            print "          " + str(noeudClic.text(0))

        print''

# Comportement de la boîte de dialogue.   FIN
# # # # # # # # # # # # # # # # # # # # #

# # # # # # # # # # # # # # # # # # # # # # # #
# Analyse brutale du changement de contenu.   DEBUT

    def chgtTexte(self):
        text_TabMatBrut = self.textUtilisateur.toPlainText()

# Traduction du contenu sous forme d'un tableau.
        self.tablo_tabMat = []
        niv = 0
        maj = True

        lignes_tabMat_Sale = text_TabMatBrut.split("\n")
        lignes_tabMat = []

        for i in range(len(lignes_tabMat_Sale)):
# On nettoie les lignes.
            uneLignePropre = str(lignes_tabMat_Sale[i]).strip()
            if uneLignePropre <> '' and uneLignePropre <> '>' and uneLignePropre <> '>>' :
                lignes_tabMat.append(uneLignePropre)

# On parcourt les lignes en les analysant.
        for i in range(len(lignes_tabMat)):
            uneLignePropre = lignes_tabMat[i]
# Repérage d'une PARTIE
            if uneLignePropre[:2] == '>>':
                if niv < 2:
                    maj = False
                    print u"Un problème de structure logique (sûrement temporaire) a été repéré.\nLa 1ère balise défectueuse est : \"" + uneLignePropre + '".\n'
                    break
                else:
                    uneLignePropre = uneLignePropre[2:].strip()

                    if i == len(lignes_tabMat) - 1:
                        tablo_Partie.append(uneLignePropre)
                        tablo_Para.append(tablo_Partie)
                        self.tablo_tabMat.append(tablo_Para)
                    else:
                        lignePropreSuivante = lignes_tabMat[i + 1]

                        if lignePropreSuivante[:2] == '>>':
                            tablo_Partie.append(uneLignePropre)
                        elif lignePropreSuivante[0] == '>':
                            tablo_Partie.append(uneLignePropre)
                            tablo_Para.append(tablo_Partie)
                        else :
                            tablo_Partie.append(uneLignePropre)
                            tablo_Para.append(tablo_Partie)
                            self.tablo_tabMat.append(tablo_Para)

                    niv = 3

# Repérage d'un PARAGRAPHE
            elif uneLignePropre[0] == '>':
                if niv == 0:
                    maj = False
                    print u"Un problème de structure logique (sûrement temporaire) a été repéré.\nLa 1ère balise défectueuse est : \"" + uneLignePropre + '".\n'
                    break
                else:
                    uneLignePropre = uneLignePropre[1:].strip()
                    tablo_Partie = []

                    if i == len(lignes_tabMat) - 1:
                        tablo_Para.append(uneLignePropre)
                        self.tablo_tabMat.append(tablo_Para)
                    else:
                        lignePropreSuivante = lignes_tabMat[i + 1]

                        if lignePropreSuivante[:2] == '>>':
                            tablo_Partie.append(uneLignePropre)
                        elif lignePropreSuivante[0] == '>':
                            tablo_Para.append(uneLignePropre)
                        else:
                            tablo_Para.append(uneLignePropre)
                            self.tablo_tabMat.append(tablo_Para)

                        niv = 2

# Repérage d'un CHAPITRE
            else:
                niv = 1
                tablo_Para = []
                tablo_Partie = []

                if i == len(lignes_tabMat) - 1:
                    self.tablo_tabMat.append(uneLignePropre)
                else:
                    lignePropreSuivante = lignes_tabMat[i + 1]

                    if lignePropreSuivante[0] <> '>':
                        self.tablo_tabMat.append(uneLignePropre)
                    else:
                        tablo_Para.append(uneLignePropre)


# Mise à jour de l'arbre de la table (la technique est similaire à celle utilisée pour l'affichage HTML de la Table des Matières).
        if maj:
            if self.tablo_tabMat <> self.tablo_tabMat_Memo:
                self.lineTitre_2.setText(QtGui.QApplication.translate("dial_TestAnaBalise", "Arbre de la table des matières", None, QtGui.QApplication.UnicodeUTF8))

                self.tablo_tabMat_Memo = self.tablo_tabMat
                self.treeWidget.clear()
                self.treeWidget.setColumnCount(1)
                self.treeWidget.setHeaderLabels(["Sommaire"])
                self.treeWidget.setItemsExpandable(True)

                for i_Chap in range(len(self.tablo_tabMat)):
                    try:
# ATTENTION ! IL faut donner un tableau avec une seule chaîne pour nourrir l'arbre.
# Donc tabNiv_1 = QtGui.QTreeWidgetItem(self.treeWidget, [self.tablo_tabMat[i_Chap]])  ne marchera
# que si self.tablo_tabMat[i_Chap] est une chaîne de caractères.
# Si ce n'est pas le cas, c'est que le chapitre contient des paragraphes.
                        tabNiv_1 = QtGui.QTreeWidgetItem(self.treeWidget, [self.tablo_tabMat[i_Chap]])
                        tabNiv_1.setIcon(0, QtGui.QIcon('Images/im_1.png'))

                    except:
                        tabloPara =  self.tablo_tabMat[i_Chap]

                        for i_Para in range(len(tabloPara)):
                            if i_Para == 0:
                                tabNiv_1 = QtGui.QTreeWidgetItem(self.treeWidget, [tabloPara[0]])
                                tabNiv_1.setIcon(0, QtGui.QIcon('Images/im_1.png'))
                                self.treeWidget.expandItem(tabNiv_1)
                            else:
                                try:
                                    tabNiv_2 = QtGui.QTreeWidgetItem(tabNiv_1, [tabloPara[i_Para]])
                                    tabNiv_2.setIcon(0, QtGui.QIcon('Images/im_2.png'))
                                    self.treeWidget.expandItem(tabNiv_2)

                                except:
                                    tabloPartie =  tabloPara[i_Para]

                                    for i_Partie in range(len(tabloPartie)):
                                        if i_Partie == 0:
                                            tabNiv_2 = QtGui.QTreeWidgetItem(tabNiv_1, [tabloPartie[0]])
                                            tabNiv_2.setIcon(0, QtGui.QIcon('Images/im_2.png'))
                                            self.treeWidget.expandItem(tabNiv_2)
                                        else:
                                            tabNiv_3 = QtGui.QTreeWidgetItem(tabNiv_2, [tabloPartie[i_Partie]])
                                            tabNiv_3.setIcon(0, QtGui.QIcon('Images/im_3.png'))
                                            self.treeWidget.expandItem(tabNiv_3)

# Pas de mise à jour possible.
        else :
            self.tablo_tabMat_Memo = self.tablo_tabMat
            self.lineTitre_2.setText(QtGui.QApplication.translate("dial_TestAnaBalise", "Mise à jour impossible", None, QtGui.QApplication.UnicodeUTF8))


# Analyse brutale du changement de contenu.   FIN
# # # # # # # # # # # # # # # # # # # # # #


# # # # # # # # # # # # # # #
# Lancement de l'application.
if __name__ == "__main__":
    app = QtGui.QApplication(sys.argv)
    Projet3 = dial_Projet3()
    Projet3.show()
    sys.exit(app.exec_())



More information about the PyQt mailing list