Dictionnaire et ligne avec des checkbox
Bonsoir,
Je n'avance plus avec mon code, je sais plus trop comment faire.
Pour résumé:
Le code lance une fenêtre avec un table widget de 6 colonnes rempli de checkbox sauf pour la 1ere colonne et des lignes en fonctions des fichiers pdf que j'ai a traiter.
Dans la 1 ère colonne , ça affiche les noms des fichiers.
Dans la 2 ème, ce sont des checkbox avec comme entête 10 (le nombre a dupliquer)
Dans la 3 ème, ce sont des checkbox avec comme entête 20 (le nombre a dupliquer)
Dans la 4 ème, ce sont des checkbox avec comme entête la ref1
Dans la 5 ème, ce sont des checkbox avec comme entête la ref2
Dans la 6 eme, ce sont des checkbox avec comme entête la ref3
Pour chaque fichier a traiter je n'ai que 2 choix possibles -> le nombre a dupliquer et 1 référence.
Je ne sais pas comment traiter chaque ligne. j'ai essayé avec des listes ça fonctionne un peu , le problème est qu'il faut que je clic correctement ligne par ligne.
J'ai essayé avec un dictionnaire , je stagne, je pense qu'il faut faire un dico / ligne et ajouter tout ça dans une liste mais je sais pas comment faire.
voici le code:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92
| def table(self):
#Dossier source:
source = 'C:/Users/Downloads/pdfAdupliquer/test'
#Listing des PDF du dossier source:
global Listpdf
Listpdf = []
for files in os.listdir (source):
if files.endswith('.PDF') or files.endswith('.pdf'):
Listpdf.append(files)
#Config tablewidget:
nb_row = (len(Listpdf))
nb_col = 6
self.ui.tableWidget.setRowCount(nb_row)
self.ui.tableWidget.setColumnCount(6)
TableItem = QtWidgets.QTableWidgetItem
item = QTableWidgetItem()
item.setCheckState(0)
item.setFlags(QtCore.Qt.ItemIsEnabled |QtCore.Qt.ItemIsUserCheckable) #probleme , on peut cliquer a coté
#Remplissage de la tablewidget
row = 0
for pdf in (Listpdf):
for i in range(nb_row):
self.ui.tableWidget.setItem(row,0,TableItem(pdf))
self.ui.tableWidget.setItem(row,1,TableItem(item))
self.ui.tableWidget.setItem(row,2,TableItem(item))
self.ui.tableWidget.setItem(row,3,TableItem(item))
self.ui.tableWidget.setItem(row,4,TableItem(item))
self.ui.tableWidget.setItem(row,5,TableItem(item))
row = (row + 1)
self.ui.tableWidget.itemChanged.connect(self.ajoutCheckbox)
#dico
global dico
dico = {}
global dicolist
dicolist = []
def ajoutCheckbox(self,item):
#config
row = item.row()
col = item.column()
nb_row = (len(Listpdf))
nb_col = 6
#verification de l'état de la checkbox
check = item.checkState()
#ajout des checkbox coché dans une liste
i = 0
for i in range(nb_row):
#### Ajout -> le choix x10 ####
if check == 2 and row == i and col == 1:
dico["Nom"] = self.ui.tableWidget.item(i, 0).text()
dico["Quantité"] = self.ui.tableWidget.horizontalHeaderItem(1).text()
dico["REF"] = ""
self.ui.tableWidget.item(i, 2).setCheckState(0)
#### Ajout -> le choix x20 ####
if check == 2 and row == i and col == 2:
dico["Nom"] = self.ui.tableWidget.item(i, 0).text()
dico["Quantité"] = self.ui.tableWidget.horizontalHeaderItem(2).text()
dico["REF"] = ""
self.ui.tableWidget.item(i, 1).setCheckState(0)
#### Ajout -> REF1) ####
if check == 2 and row == i and col == 3:
dico["REF"] = self.ui.tableWidget.horizontalHeaderItem(3).text()
self.ui.tableWidget.item(i, 4).setCheckState(0)
self.ui.tableWidget.item(i, 5).setCheckState(0)
#### Ajout -> REF2) ####
if check == 2 and row == i and col == 4:
dico["REF"] = self.ui.tableWidget.horizontalHeaderItem(4).text()
self.ui.tableWidget.item(i, 3).setCheckState(0)
self.ui.tableWidget.item(i, 5).setCheckState(0)
#### Ajout -> REF2) ####
if check == 2 and row == i and col == 5:
dico["REF"] = self.ui.tableWidget.horizontalHeaderItem(5).text()
self.ui.tableWidget.item(i, 4).setCheckState(0)
self.ui.tableWidget.item(i, 3).setCheckState(0) |
Une piste ou une aide serait la bienvenue , merci.