#!/usr/bin/env python2.7 # -*- coding: utf-8 -*- import sys import csv from PyQt4 import QtGui from PyQt4 import QtCore import arbre2 as arbre_node class Dialog1(QtGui.QDialog): def __init__(self): super(Dialog1, self).__init__() self.list_arbo = self.import_csv() def import_csv(self): #PARTIE CSV #csv separateur champ:tab separateur texte: double quote: ifile = open('acoubat_export/acoubat-table-classeproduit.csv', 'rb') reader = csv.reader(ifile, delimiter=' ', quotechar='"') self.tableau_importCSV = [] tableau_final = [] for ligne in reader: #print ligne self.tableau_importCSV.append(ligne) ifile.close() #fermeture du fichier CSV self.tableau_importCSV = self.tableau_importCSV[1:(len(self.tableau_importCSV)-1)] #print self.tableau_importCSV #fichier CSV #0 fils #1 parent #2 decriptifs fils mon_list = [] for indice, valeur in enumerate(self.tableau_importCSV): #enumerate retourne la valeur et l'indice piti_list = [] if valeur[1] == "ACOUBAT": piti_list.extend([indice, valeur[0], valeur[1], valeur[2]]) #extend: ajout de liste dans un list mon_list.append(piti_list) #print mon_list #mon_list #0 indice #1 fils #2 parent #3 decriptifs fils mon_layout = QtGui.QVBoxLayout() self.monModele = QtGui.QStandardItemModel() cont = 0 for elem in mon_list: mon_item = QtGui.QStandardItem(elem[1]) mon_item.setEditable(False) for indice, valeur in enumerate(self.tableau_importCSV): #enumerate retourne la valeur et l'indice #print valeur[2], elem[1], "\n" if valeur[1] == elem[1]: print valeur[1], elem[1] self.generateTree(mon_item, valeur[0]) self.monModele.setItem(cont, 0, mon_item) cont = cont + 1 #self.ma_vue = QtGui.QTableView() self.ma_vue = QtGui.QTreeView() #self.ma_vue.header().hide() self.ma_vue.setSelectionMode(QtGui.QAbstractItemView.ExtendedSelection) self.ma_vue.setModel(self.monModele) #self.ma_vue.hideColumn(1) # à bien placer après avoir fait le "Setmodel" mon_layout.addWidget(self.ma_vue) self.monPushButton = QtGui.QPushButton("Visualisation") QtCore.QObject.connect(self.monPushButton,QtCore.SIGNAL("clicked()"),self.clicSelection) #(utiliser fonction lambda) mon_layout.addWidget(self.monPushButton) self.setLayout(mon_layout) self.show() def generateTree(self, node, son): #QStandardItem, QString #toto = 4/0 item_enfant = QtGui.QStandardItem(son) item_enfant.setEditable(False) node.appendRow(item_enfant) for indice, valeur in enumerate(self.tableau_importCSV): #enumerate retourne la valeur et l'indice if valeur[1] == son: self.generateTree(item_enfant, valeur[0]) def clicSelection(self): #self.monModele est un QtGui.QStandardItemModel() """ indice_selection_unique = self.ma_vue.selectionModel().currentIndex() #renvoie un QModelIndex mon_text = self.monModele.data(indice_selection_unique, QtCore.Qt.DisplayRole).toString() QtGui.QMessageBox.information(self, 'Element sélectionné',mon_text) """ print "clic" maSelection = self.ma_vue.selectionModel() #listeElementSelectionne = maSelection.selectedIndexes() #renvoie un list-of-QModelIndex mon_list_of_QModelIndex = maSelection.selectedRows() #renvoie un list-of-QModelIndex TotalElementSelectionne = "" for i in range(len(mon_list_of_QModelIndex)): num_row_du_Qmodel = mon_list_of_QModelIndex[i].row() parent_Qmodel = mon_list_of_QModelIndex[i].parent() print "num_row_du_Qmodel" print num_row_du_Qmodel nb_col = self.monModele.columnCount(mon_list_of_QModelIndex[i]) #nb colonne "dans" leQmodelindex print "nb_col" print nb_col #mon_text = self.monModele.data(self.monModele.index(0,0), QtCore.Qt.DisplayRole) #print mon_text.toString() for num_col in range(nb_col): #mon_text = self.monModele.data(self.monModele.index(num_row_du_Qmodel,num_col), QtCore.Qt.DisplayRole) mon_text = self.monModele.data(self.monModele.index(num_row_du_Qmodel,num_col, parent_Qmodel), QtCore.Qt.DisplayRole) print mon_text.toString() #mon_text = self.monModele.data(self.monModele.index(num_row_du_Qmodel,num_col_du_Qmodel), QtCore.Qt.DisplayRole) #mon_text = self.monModele.data(self.monModele.index(0,0), QtCore.Qt.DisplayRole) #print mon_text.toString() print "" #TotalElementSelectionne = TotalElementSelectionne + elementSelectionne.toString() + "
" #QtGui.QMessageBox.information(self, 'Element sélectionné',TotalElementSelectionne) def main(): app = QtGui.QApplication(sys.argv) ex = Dialog1() sys.exit(app.exec_()) if __name__ == '__main__': main()