Partage
  • Partager sur Facebook
  • Partager sur Twitter

Un argument pas si "wrong" que ça...

PySide/PyQt

Sujet résolu
    22 décembre 2010 à 19:43:39

    Bonsoir les Zéros !

    Mon projet actuel me fait utiliser PySide et le pattern MVC. Je vous expose la situation :
    j'ai un QSandardItemModel auquel je souhaite ajouter un ligne à partir d'une liste. ce qui donne
    quelque chose dans ce goût là :

    self.itemMot = [False, self.champ1.text().lower(),self.champ2.text().lower()]
    self.liste.appendRow(self.itemMot[1:])#Pour exclure le False
    


    La seule réponse de Python est celle-ci :

    TypeError: 'PySide.QtGui.QStandardItemModel.appendRow' called with wrong argument types:
      PySide.QtGui.QStandardItemModel.appendRow(list)
    Supported signatures:
      PySide.QtGui.QStandardItemModel.appendRow(PySide.QtGui.QStandardItem)
      PySide.QtGui.QStandardItemModel.appendRow(list)


    Permettez-moi de ne pas comprendre où Python voit son "wrong argument types" :euh: !
    Je m'en remet donc à vous. Merci de votre aide !
    • Partager sur Facebook
    • Partager sur Twitter
      23 décembre 2010 à 10:47:53

      Peut être que les éléments de ta liste ne sont tout simplement pas du bon type (où qu'il n'y en a pas le bon nombre).

      Sauf erreur de ma part, pySide et Open source, regarde directement dans le code pour voir les vérifications qui sont faites sur le type.
      • Partager sur Facebook
      • Partager sur Twitter
        24 décembre 2010 à 12:53:23

        J'ai cherché le code de PySide sur le site mais il n'y a pas ce qu'il me faut. Je suis sous Linux. Quelqu'un sait où est le code source de PySide ?
        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          24 décembre 2010 à 13:42:28

          Citation

          self.itemMot[1:]



          Mais là tu renvois une liste, pas un item de la liste.

          C'est pour cela que tu as ce message d'erreur --> PySide.QtGui.QStandardItemModel.appendRow(list)

          • Partager sur Facebook
          • Partager sur Twitter
            24 décembre 2010 à 13:53:05

            list , ça désigne une liste en entier, je crois, car les item peuvent-être de type différents.
            Si je fais
            >>> type(["exemple"])
            <type 'list'>
            

            list désigne donc bien la liste en elle-même !
            • Partager sur Facebook
            • Partager sur Twitter
            Anonyme
              24 décembre 2010 à 13:58:03

              Ah ba je sais pas si je me suis bien fais comprendre, mais ce que je voulais dire c'est qu'en argument justement il aime pas les listes.

              Essai simplement avec un str pour voir.

              Edit : Qui puis-est il me semble que la doc indique comme quoi on doit ajouter un seul item

              Citation

              When building a list or a tree that has only one column, this function provides a convenient way to append a single new item.

              • Partager sur Facebook
              • Partager sur Twitter
                24 décembre 2010 à 14:08:32

                J'ai essayé avec une chaine de caractère mais l'erreur est identique ! Et pour la doc juste au dessus il y a la fonction QStandardItemModel.appendRow(items). Est-ce que c'est une liste items ? Je l'ai pris comme tel.
                De plus, le message d'erreur explique bien qu'on peut transmettre une liste à cette fonction.

                EDIT

                J'ai trouvé !! En cherchant dans la doc C++ de Qt, j'ai vu que appendRow() attends une liste de QStandardItem alors que j'essayais avec une liste de unicode . Merci à tous !!
                • Partager sur Facebook
                • Partager sur Twitter

                Un argument pas si "wrong" que ça...

                × 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