IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PyQt Python Discussion :

Dictionnaire et ligne avec des checkbox


Sujet :

PyQt Python

  1. #1
    Membre à l'essai
    Homme Profil pro
    rien
    Inscrit en
    Février 2019
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : rien

    Informations forums :
    Inscription : Février 2019
    Messages : 4
    Par défaut 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 : 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
    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.

  2. #2
    Expert confirmé
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 486
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Citation Envoyé par renetco1414urrie Voir le message
    ...Je ne sais pas comment traiter chaque ligne...
    Pour faire quoi? Souvent, on se pose des questions sur le code, mais on n'a pas suffisamment éclairci ce qu'on veut faire.

    Par exemple, s'il ne faut changer la coche que sur un des checkbox pour un même fichier, on peut faire un contrôle en utilisant les signaux émis par le changement d'une coche, ou le changement de ligne sélectionnée, ou encore le lancement d'un traitement. Etc... Sans clarifier le but à atteindre, on ne sait pas ce qu'il faut coder. Il faut imaginer les interactions avec l'utilisateur, en fonction de ce qui est techniquement possible de programmer, et ce qui est acceptable sur le plan ergonomique par l'utilisateur.

    Par ailleurs, si les données de base (hors affichage par un QTableWidget) sont dans un dictionnaire avec le nom de fichier comme clé, il faut être sûr qu'aucun autre fichier n'a le même nom. Sinon, la clé devra comporter le fichier avec son adresse disque complète.

Discussions similaires

  1. [MySQL] Probleme d'affichage avec des checkbox
    Par napz dans le forum PHP & Base de données
    Réponses: 15
    Dernier message: 08/11/2006, 14h43
  2. FileListBox avec des checkbox..
    Par tazthedev dans le forum Delphi
    Réponses: 1
    Dernier message: 09/10/2006, 16h34
  3. Réponses: 1
    Dernier message: 26/06/2006, 11h33
  4. [Tableaux] Problème de foreach avec des checkboxes
    Par nanor21 dans le forum Langage
    Réponses: 10
    Dernier message: 15/05/2006, 01h04
  5. Problème simple avec des checkbox
    Par nanor21 dans le forum Langage
    Réponses: 2
    Dernier message: 07/05/2006, 00h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo