Bonjour,

Je tiens à vous prévenir, je n'ai pas spécialement de soucis, le code fait ce que je voulais, mais du coup je cherche à comprendre pourquoi il fonctionne bien xD.

Pour le contexte, je fais un logiciel de calcul. Quand les calculs sont lancés, je les exécute tous avant de vérifier les résultats. Si des erreurs sont trouvées, je vais les affichées dans un QTreeView, sinon j'active juste les onglets de résultats.

Voici les codes :
Celui d'où je lance les calculs

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 
def Calculer(self):
        #Récupérations des données saisies
        dic=self._RecuperationDonneesInterfaceUtilisateur()
        #Lancement des calculs avec la vérifications à la fin
        #Renvoie True si aucune erreur, sinon renvoie un tuple contenant les erreurs
        calcul=self._metier.Calcul(dic)
        if calcul==True:
            self._calculeEffectuer=True
            self._OngletResultatEnabled()
        else:
            self._calculeEffectuer=False
            self._maView.ErreurBox(calcul)
Et celui qui gère l'affichage de l'ihm :

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
def ErreurBox(self,_tuple):
        #Création QTreeView et du model
        self.treeViewErreur=QtWidgets.QTreeView(None)
        self.model=QtGui.QStandardItemModel(0,3)
        self.model.setHeaderData(self.CALCUL,QtCore.Qt.Horizontal,"Nom du calcul :")
        self.model.setHeaderData(self.SYMBOLE,QtCore.Qt.Horizontal,"Symbole :")
        self.model.setHeaderData(self.ERREUR,QtCore.Qt.Horizontal,"Erreur :")
        self.treeViewErreur.setModel(self.model)
        #Insertions des erreurs
        i=0
        while i<len(_tuple):
            self.model.insertRow(i)
            self.model.setData(self.model.index(i,self.CALCUL),_tuple[i][0])
            self.model.setData(self.model.index(i,self.SYMBOLE),_tuple[i][1])
            self.model.setData(self.model.index(i,self.ERREUR),_tuple[i][2])
            i+=1
        #Ajout du QTreeView dans le layout prévu à cet effet.
        self.ex.verticalLayout_Erreur.addWidget(self.treeViewErreur)
Ma méthode "Calculer()" est la seule qui interagit avec la méthode "ErreurBox()". Du coup mon QTreeView disparait car ce dernier est créé dans ma méthode "ErreurBox()" et comme il n'est plus appelé il est détruit ?

Veuillez m'excuser s'il y a des fautes d'orthographes...

P.S : J'utilise python 3.6 et PyQt5