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 :

Affichage des données


Sujet :

PyQt Python

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2015
    Messages : 21
    Points : 13
    Points
    13
    Par défaut Affichage des données
    bonjour j'ai un problème que je sais pas comment le résoudre j'ai développer mon application avec Pyqt et python 2.7 en créons les interface avec Qt Creator
    mais mon problème c'est a l'affichage des données récupérer de la base des données pour les afficher dans un QTablWidget:
    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
     
        def afficher_hyp_exsist_bd(self):
            self.ui.hyp1.setRowCount(5)
            self.ui.hyp1.setColumnCount(3)
            rows1 =self.ui.hyp1.rowCount()
            print(rows1)
            columns1 = self.ui.hyp1.columnCount()
            cnx = mysql.connector.connect(user='root', password='',
                                          host='localhost',
                                          database='testdb')
            cursor = cnx.cursor()
            lis = []
            lis2 = []
            tt = []
            cursor.execute("SELECT * FROM hypothese ") 
            rows = cursor.fetchall()
     
            for row in rows:
                lis.append([row[0], row[1], row[2]])
                #lis2.append(lis)
            for i,col in enumerate(lis):
                tt = string.split(str(col))
                for j,col1 in enumerate(tt):
                    item = QtGui.QTableWidgetItem(col1)
                    self.ui.hyp1.setItem(i, j, item)

    les données s'affiche avec des virgules des apostrophe et des (u'..) !!
    Nom : tablede.png
Affichages : 249
Taille : 13,9 Ko
    d'aide SVP

  2. #2
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2015
    Messages : 21
    Points : 13
    Points
    13
    Par défaut
    Si quelqu'un peut m'aider SVP

  3. #3
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Salut,

    Si vous écrivez:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
            for row in rows:
                lis.append([row[0], row[1], row[2]])
                #lis2.append(lis)
            for i,col in enumerate(lis):
                tt = string.split(str(col))
                ...
    un simple print (tt) devrait vous montrer que çà n'affiche que ce que vous lui donnez à afficher:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    >>> L = [ 'a', 1, 1.2 ]
    >>> str(L).split()
    ["['a',", '1,', '1.2]']
    >>>
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  4. #4
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2015
    Messages : 21
    Points : 13
    Points
    13
    Par défaut
    Bonjour wiztricks et merci pour ta réponse

    Mais là les données que je veux récupérer sont dans la base données et elle sont inseret correctement dans BD ce problème d'affichage qu'on je vx récupérer mes données inséré

  5. #5
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 461
    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 461
    Points : 9 248
    Points
    9 248
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Issue de l'extraction de la base de données, rows est une liste de tuples qui contient déjà toutes les données prêtes à être affichées.

    => fait un print rows pour le vérifier!

    Alors, l'affichage dans le QTableWidget devrait être aussi simple que ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    for i, row in enumerate(rows):
        for j, col in enumerate(row):
            item = QtGui.QTableWidgetItem(col)
            self.ui.hyp1.setItem(i, j, item)
    Si les valeurs numériques de la base sont en numérique dans rows, il faudra les passer en chaine pour le QTableWidget après un test comme if isinstance(col, (int,long)): etc....

    Comme c'est du Python 2, il pourrait rester éventuellement des pb d'encodage à résoudre (il faut travailler en unicode)
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Citation Envoyé par kacimed Voir le message
    Bonjour wiztricks et merci pour ta réponse

    Mais là les données que je veux récupérer sont dans la base données et elle sont inseret correctement dans BD ce problème d'affichage qu'on je vx récupérer mes données inséré
    Ben relisez votre code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
           for row in rows:
                lis.append([row[0], row[1], row[2]])
                #lis2.append(lis)
            for i,col in enumerate(lis):
                tt = string.split(str(col))
                for j,col1 in enumerate(tt):
                    item = QtGui.QTableWidgetItem(col1)
                    self.ui.hyp1.setItem(i, j, item)
    rows étant déjà une liste de tuple, quel intérêt d'en faire une liste de listes?
    Si une row contient:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    >>> row = [ 'a', 1, 1.2 ]
    Ce que vous avez écrit revient à:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    >>> for e in str(row).split(): print (e)
    ...
    ['a',
    1,
    1.2]
    Alors que ce que vous vouliez peut être écrire serait plutôt:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    >>> for e in row:
    ...     print (str(e))
    ...
    a
    1
    1.2
    >>>
    Pas besoin de base de donnée, ni de GUI pour reproduire un simple problème dans le traitement de listes et de chaînes de caractères...

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  7. #7
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2015
    Messages : 21
    Points : 13
    Points
    13
    Par défaut
    Rebonjour je vous remercie pour votre réponce Tyrtamos

    pour ce code cça marche il affiche les donnes correcte mais le problème c'est qu'il retourne seulement la premier colonne de la table
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    for i, row in enumerate(rows):
        for j, col in enumerate(row):
            item = QtGui.QTableWidgetItem(col)
            self.ui.hyp1.setItem(i, j, item)
    c'est pourquoi on est tjrs besoin de faire appel a lis.append([row[0], row[1], row[2]])

    pour arriver a afficher les autre colonnes SVP

  8. #8
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 461
    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 461
    Points : 9 248
    Points
    9 248
    Billets dans le blog
    6
    Par défaut
    Voilà un exemple simplifié:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    rows = [(0, 1, 2), (3, 4, 5), (6, 7, 8)]
     
    for i, row in enumerate(rows):
        for j, col in enumerate(row):
            print "ligne:", i, "colonne:", j, "valeur:", col
    Ce qui affiche:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    ligne: 0 colonne: 0 valeur: 0
    ligne: 0 colonne: 1 valeur: 1
    ligne: 0 colonne: 2 valeur: 2
    ligne: 1 colonne: 0 valeur: 3
    ligne: 1 colonne: 1 valeur: 4
    ligne: 1 colonne: 2 valeur: 5
    ligne: 2 colonne: 0 valeur: 6
    ligne: 2 colonne: 1 valeur: 7
    ligne: 2 colonne: 2 valeur: 8
    On voit bien que chacune des valeurs est bien trouvée, avec le bon numéro de ligne et le bon numéro de colonne.

    ???
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  9. #9
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2015
    Messages : 21
    Points : 13
    Points
    13
    Par défaut
    bonjour tyrtamos :
    concernent votre réponse :
    Si les valeurs numériques de la base sont en numérique dans rows, il faudra les passer en chaine pour le QTableWidget après un test comme if isinstance(col, (int,long)): etc....
    pour votre réponse pouvez-vous méxpliquer cmt je dois reagire ,prenons compte que les deux autre colnnes ons des valeurs numerique!
    merci infiniment

  10. #10
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 461
    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 461
    Points : 9 248
    Points
    9 248
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Facile: comme je l'ai dit, il faut faire un test et si oui, faire une conversion des nombres en string, ou plutôt en unicode puisqu'on est en Python 2:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    rows = [(0, 1, 2), (3, 4, 5), (6, 7, 8)]
     
    for i, row in enumerate(rows):
        for j, col in enumerate(row):
            if isinstance(col, (int, long)):
                col = u"%d" % col
            elif isinstance(col, float):
                col = u"%f" % col # on peut choisir le formatage exact du nb flottant
            # ici, on suppose que col est une chaine unicode
            ....
            ....
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  11. #11
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Citation Envoyé par tyrtamos Voir le message
    Facile: comme je l'ai dit, il faut faire un test et si oui, faire une conversion des nombres en string, ou plutôt en unicode puisqu'on est en Python 2:
    Bah, si le besoin est de convertir des types simple en unicode, on peut le faire en aveugle:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for i, row in enumerate(rows):
        for j, col in enumerate(row):
            col = unicode (col)
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

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

Discussions similaires

  1. [MySQL] Affichage des données d'une base
    Par leloup84 dans le forum PHP & Base de données
    Réponses: 30
    Dernier message: 01/02/2006, 16h35
  2. [Tableaux] Affichage des données par lot
    Par randriarabe dans le forum Langage
    Réponses: 1
    Dernier message: 07/12/2005, 08h23
  3. pb d'affichage des données
    Par new_wave dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 03/11/2005, 17h31
  4. TDBCtrlGrid - Affichage des données
    Par audreyb dans le forum Bases de données
    Réponses: 1
    Dernier message: 24/10/2004, 13h10
  5. [JTable] Problème d'affichage des données
    Par ddams dans le forum Composants
    Réponses: 2
    Dernier message: 15/09/2004, 17h07

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