Bonjour,
J'utilise deux QTableView l'un affiche les clients et l'autre affiche les informations détaillées pour chaque clients par l'intermédiaire de la fonction setfilterphases
Pour le moment, il n'y a pas de problème chaque enregistrement sélectionné dans le premier tableau, le second affiche ces données.
Ce que demande, c'est comment afficher les informations détaillées pour chaque clients dans une list [] comme ceci : (111111, 222222, 333333, '2018-12') à partir du QSqlRelationalTableModel du deuxième QTableView.
Autrement dit, adapter le code python ci-dessous en PyQt :
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 c.execute("SELECT phase1, phase2, phase3, date FROM tmp1 WHERE reference=id") data = c.fetchall() phase1 = [] phase2 = [] phase3 = [] date = [] print(data) for row in data: print(row) phase1.append(row[0]) phase2.append(row[1]) phase3.append(row[2]) date.append(row[3])
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 #Liste Clients self.modellistemenu = QSqlRelationalTableModel(self) self.modellistemenu.setTable("clients") self.modellistemenu.setEditStrategy(QSqlRelationalTableModel.OnManualSubmit) self.modellistemenu.select() self.modellistemenu.setSort(0, Qt.AscendingOrder) self.ui.tableViewmenu.setSortingEnabled(False) self.ui.tableViewmenu.resizeColumnsToContents() self.ui.tableViewmenu.setModel(self.modellistemenu) self.ui.tableViewmenu.selectionModel().currentRowChanged self.modellistemenu.setRelation(0,QSqlRelation('tmp1', 'reference', ' '))
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 #Affichage Phases self.modellistetmp1 = QSqlRelationalTableModel(self) self.modellistetmp1.setTable("tmp1") self.modellistetmp1.setEditStrategy(QSqlRelationalTableModel.OnManualSubmit) self.modellistetmp1.select() self.modellistetmp1.setSort(0, Qt.AscendingOrder) self.ui.tableViewrelevephases.setSortingEnabled(True) self.ui.tableViewrelevephases.resizeColumnsToContents() self.ui.tableViewrelevephases.setModel(self.modellistetmp1) self.ui.tableViewmenu.clicked.connect(self.setfilterphases)
Merci
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 def setfilterphases(self, index): reference=self.modellistemenu.data(self.modellistemenu.index(index.row(),0, QModelIndex())) self.modellistetmp1.setFilter("reference = {}".format(reference)) self.ui.tableViewrelevephases.setModel(self.modellistetmp1)
Partager