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
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 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)
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 ?
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)
Veuillez m'excuser s'il y a des fautes d'orthographes...
P.S : J'utilise python 3.6 et PyQt5
Partager