Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Resolu] Pyqt 4 ajouter une ligne a un tableau

    13 novembre 2014 à 14:20:31

    Bonjour ,

    voila je vous presente mon probleme, j'ai creer 3 tableau avec un bouton chacun

    qui lorsqu'on click dessus doit rajouter une ligne au tableau, tout marche mais lorsque

    je click sur le bouton j'ai ce message d'erreur "  AttributeError: 'Dispatcher' object has no attribute 'line'     "

    Voici mon code :

    class table(QWidget):
    
    
        def __init__(self, parent = None):
            super(table, self).__init__()
    
            self.tableau = self.createTable()
    
            
    
        def createTable(self):
            line = 3
            tableau = QTableWidget(line, 2, self)
            tableau.setHorizontalHeaderLabels("Parameter;Value".split(";"))
            tableau.verticalHeader().setVisible(False)
            tableau.horizontalHeader().setStretchLastSection(True)
            combobox = QComboBox()
            combobox.addItem(self.type)
            combobox.addItem(self.type1)
            
            cell = QTableWidgetItem(QString("Parameter"))
            cell1 = QTableWidgetItem(QString("Value"))
            cell2 = QTableWidgetItem(QString(""))
            cell3 = QTableWidgetItem(QString("Types"))
    
            tableau.setItem(0, 0, cell3)
            tableau.setCellWidget(0, 1, combobox)
          
    
            tableau.resizeColumnsToContents()
    
            Button = QPushButton('+', self)
            Button.resize(20,20)
            Button.move(255,0)
            Button.clicked.connect(self.add_line)
        
        def add_line(self):
            self.line = self.line+1
            
    
    
    
    class Dispatcher(table):
        type = "Local"
        type1 = "OAR"
        
    class Input(table):
        type = "???"
        type1 = "???"
      
    class Projection(table):
        type = "???"
        type1 = "???"  
    

    Si vous avez une solution je suis prenneur ! :)

    -
    Edité par El'McLovin 14 novembre 2014 à 11:34:33

    • Partager sur Facebook
    • Partager sur Twitter
      13 novembre 2014 à 15:25:40

      Salut,

      Dans ta classe Table, tu n'a pas défini d'attribut line (à moins que QWidget n'en dispose). Donc quand tu utilise ta méthode add_line() python t'explique gentiment: «hop hop hop coco, je n'ai pas d'attribut line. Si tu veux m'en mettre un, libre à toi. Mais alors met le moi dans ma méthode __init__()»:

      def __init__(self, parent = None):
      
          QWidget.__init__(self)
          self.tableau = self.createTable()
          self.line = 3
      • Partager sur Facebook
      • Partager sur Twitter
      Précepte: Le mieux est l'ennemi du bien
        13 novembre 2014 à 15:45:43

        Merci beaucoup c'etait bien la solution , je n'est plus l'erreur !

        Mais bon je n'est toujours pas les lignes qui s'ajoute , ma method add_line est surement plus que foireuse , je vais me creuser encore la tete ^^

        si quelqu'un a une piste faite moi signe. :D

        • Partager sur Facebook
        • Partager sur Twitter
          13 novembre 2014 à 16:05:57

          Je ne connais pas PyQt, mais il était évident que ta méthode add_line() ne rajoutait pas de ligne (elle ne fait qu'incrémenter la variable line).

          Si tu veux ajouter une ligne, il suffit de te poser la question: Comment d'habitude j'ajoute une ligne à mon tableau? Quelle méthode j'utilise pour ajouter une ligne à mon tableau? Une fois trouvé, ça sera une partie de plaisir :lol:

          • Partager sur Facebook
          • Partager sur Twitter
          Précepte: Le mieux est l'ennemi du bien
            13 novembre 2014 à 16:35:08

            Bah je penser que le faite de clicker sur le bouton lancerais l'evement qui va incrementer " line" qui est la variable qui initialise mon nombre de lignes dans le tableau et que du coup j'allais avoir des lignes en plus comme cella >_<

            Sinon pour la methode a utiliser "append" ? mais je trouve quand meme ca bizarre :o

            • Partager sur Facebook
            • Partager sur Twitter
              13 novembre 2014 à 17:17:24

              C'est append que tu utilise pour ajouter des lignes à ton tableau? Attention, ici on ne parle pas de liste, mais de tableau dans le sens interface graphique.

              Comme déjà dit, je n'ai jamais utilisé PyQt, donc il faut que tu sache exactement ce que tu veux faire pour que je t'aide. Je suppose que tu as crée graphiquement un tableau et que tu veux, lorsque tu appuie à un certain endroit de ton interface graphique, ajouter une ligne à celui-ci. Je me trompe? Donc la question est toujours la même: Comment en PyQt ajoute-tu des lignes à un tableau?

              -
              Edité par Olygrim 13 novembre 2014 à 17:18:47

              • Partager sur Facebook
              • Partager sur Twitter
              Précepte: Le mieux est l'ennemi du bien
                14 novembre 2014 à 11:32:20

                Oui donc du coups j'ai la solution, il fallait utiliser "rowCount " qu'on incremente apres l'evenement click.

                voila ce que donne le code ^^

                class table(QWidget):
                
                    
                    def __init__(self, parent = None):
                        super(table, self).__init__()
                        
                        # create a QTableWidget 
                        self.table = QTableWidget(1, 2, self)
                        self.table.setHorizontalHeaderLabels(['Parameter', 'Value'])
                        self.table.horizontalHeader().setStretchLastSection(True)
                        self.table.verticalHeader().setVisible(False)
                        #create combobox
                        combobox = QComboBox()
                        combobox.addItem(self.type2)
                        combobox.addItem(self.type1)
                        #add items
                        cell = QTableWidgetItem(QString("Types"))
                        self.table.setItem(0, 0, cell)
                        self.table.setCellWidget(0, 1, combobox)
                        # create push button and add it to a horizontal layout
                        self.btn_add_row = QPushButton('+', self)
                        self.btn_add_row.resize(20,20)
                        self.btn_add_row.move(255,0)
                        # connect button clicked signal to our handler
                        self.connect(self.btn_add_row, SIGNAL('clicked()'), self.add_row)
                
                    def add_row(self):
                        self.table.setRowCount(self.table.rowCount() + 1)
                        
                
                class Dispatcher(table):
                    type2 = "Local"
                    type1 = "OAR"
                    
                class Input(table):
                    type2 = "???"
                    type1 = "???"
                  
                class Projection(table):
                    type2 = "???"
                    type1 = "???"  


                Merci pour ton aide Olygrim ! :)

                • Partager sur Facebook
                • Partager sur Twitter

                [Resolu] Pyqt 4 ajouter une ligne a un tableau

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown