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 :

Numéroter les lignes d'un tableau [QtGui]


Sujet :

PyQt Python

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2011
    Messages
    297
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 297
    Par défaut Numéroter les lignes d'un tableau
    Bonjour
    j'ai mon tableau de n_ligne qui varie et n_colonne fixe
    j'aimerais bien numéroter ses lignes , j'ai fais le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    nb=0
    while nb<n_ligne:
        item = QtGui.QTableWidgetItem()
        self.table.setVerticalHeaderItem(nb, item)
      self.table.verticalHeaderItem(nb).setText(QtGui.QApplication.translate("Fenetre", nb, None, QtGui.QApplication.UnicodeUTF8))
    et j'ai cette erreur :
    TypeError: function takes exactly 5 arguments (1 given)

  2. #2
    Membre expérimenté

    Profil pro
    Développeur Java
    Inscrit en
    Mars 2010
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 87
    Par défaut
    Bonjour,
    il me semble que QtGui.QTableWidgetItem demande plus que "0" arguments à la construction cf. la documentation de PyQt http://www.riverbankcomputing.co.uk/...idgetitem.html.
    Tu peux aussi te reporter à ce Thread.

    Cordialement,

    Olivier.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2011
    Messages
    297
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 297
    Par défaut
    merci
    j'arrive à le faire quand je connais le nombre de ligne du tableau mais là, le problème ce que les lignes dépend de l'utilisateur
    même souci , si il s'agit de récupérer les valeurs des cellules
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    a=self.tableWidget.item(1,1)
            print a.data(0).toString()
    on peut plus mettre item(1,1) , item(1,2) etc car on connait pas on a combien de ligne
    et si on met item(nb,1) ca fonctionne plus
    je vais regarder les liens que tu as postulé

  4. #4
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 306
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 306
    Par défaut
    Citation Envoyé par nancy maman Voir le message
    Bonjour
    j'ai mon tableau de n_ligne qui varie et n_colonne fixe
    j'aimerais bien numéroter ses lignes
    ? Les lignes sont numérotées par défaut. Si tu ne veux pas voir apparaître cette numérotation, c'est à ce moment là que tu devras ajouter du code.

    Pour connaître le nombre de lignes de ton tableau:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    nb = self.table.count()

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2011
    Messages
    297
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 297
    Par défaut
    Hi VinsS,
    oui mais pour afficher les numéros , il ajouter le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    self.table.verticalHeaderItem(0).setText(QtGui.QApplication.translate("fen", "1", None, QtGui.QApplication.UnicodeUTF8))
    self.table.verticalHeaderItem(1).setText(QtGui.QApplication.translate("fen", "2", None, QtGui.QApplication.UnicodeUTF8))
            self.table.verticalHeaderItem(2).setText(QtGui.QApplication.translate("fen", "3", None, QtGui.QApplication.UnicodeUTF8))
    ca affiche comme dans l'image attaché (un tableau qui est composé de 3 lignes et deux colonnes)
    le problème si on connait pas le nombre de ligne à afficher (dans ce cas on a un message d'erreur)
    par exemple ce code : ici on fixe le nombre de colonne et le nombre de ligne=n_ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    nb=0
    while nb<n_ligne:
        item = QtGui.QTableWidgetItem()
        self.table.setVerticalHeaderItem(nb, item)
      self.table.verticalHeaderItem(nb).setText(QtGui.QApplication.translate("Fenetre", nb, None, QtGui.QApplication.UnicodeUTF8
    j'ai essayé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nb = self.table.count()
    pour compter le nombre de ligne et j'ai eu ce message d'erreur :
    TypeError: 'sip.methoddescriptor' object is not callable
    Images attachées Images attachées  

  6. #6
    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,

    Essaie plutôt .rowCount()

    Tyrtamos

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2011
    Messages
    297
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 297
    Par défaut
    oui rowCount() marche très bien
    merci
    tu sais pas pour mon problème de verticalHeaderItem() (décrit dans mon message ci-dessus )
    il prend en paramètre que des entiers ?!

  8. #8
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 306
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 306
    Par défaut
    Au temps pour moi, c'est évidemment rowCount() pour les lignes.

    Pour le verticalHeaderItem() tu peux bien sur utiliser une variable,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    self.table.verticalHeaderItem(nb).setText(nb)
    Mais je rappelle que les lignes sont déjà numérotées par défaut, ou alors je n'ai pas compris ce que tu veux faire. Pas impossible non plus ça.

  9. #9
    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
    Il m'est déjà arrivé de changer la numérotation de toutes les lignes de la colonne d'entête de gauche, mais j'ai utilisé setVerticalHeaderLabels(liste) avec la liste des textes à mettre.

    Tyrtamos

  10. #10
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2011
    Messages
    297
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 297
    Par défaut
    ca , si tu connais le nombre de ligne ... mais imagine toi si le nombre de ligne dépend d'une variable récupéré

  11. #11
    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
    On fixe le nombre de lignes voulues avec self.tableau.setRowCount(nblignes).

    idem pour le nombre de colonnes: self.tableau.setColumnCount(nbcols)

    Tyrtamos

  12. #12
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2011
    Messages
    297
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 297
    Par défaut
    Tyrtamos ta méthode setVerticalHeaderLabels(liste) marche bien mais ce que j'essaie de faire est plus compliqué que ca (je veux changer mais en mettant de checkBox), bon je vais réfléchir un peu pour trouver une solution adaptée à mon problème ( je vous tiendrai au courant si ca passe )

    VinsS
    merci mais je pense que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    self.table.verticalHeaderItem(nb).setText(nb)
    ne fonctionne pas car le setText ne prends pas des entiers et nb est un entier

  13. #13
    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
    Citation Envoyé par nancy maman Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    self.table.verticalHeaderItem(nb).setText(nb)
    ne fonctionne pas car le setText ne prends pas des entiers et nb est un entier
    Remplacer nb par str(nb) ou par unicode(nb)?

    Tyrtamos

  14. #14
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2011
    Messages
    297
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 297
    Par défaut
    ca marche bien avec str(nb)
    merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [WD-2003] numéroter les lignes d'un tableau au format 001
    Par lefredo25 dans le forum VBA Word
    Réponses: 2
    Dernier message: 15/04/2009, 22h36
  2. [Tableaux] lien sur les lignes d'un tableau
    Par einsteineuzzz dans le forum Langage
    Réponses: 2
    Dernier message: 19/06/2006, 14h16
  3. changement de couleur sur les lignes d'un tableau
    Par brasco06 dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 13/04/2006, 18h03
  4. [TRichEdit] Comment numéroter les lignes ?
    Par ARDILLER dans le forum Composants VCL
    Réponses: 1
    Dernier message: 27/03/2006, 15h43
  5. Espacement entre les ligne d'un tableau
    Par Flobel dans le forum Mise en page CSS
    Réponses: 9
    Dernier message: 02/11/2004, 09h33

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