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 :

compilation avec erreur


Sujet :

PyQt Python

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2017
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2017
    Messages : 33
    Points : 14
    Points
    14
    Par défaut compilation avec erreur
    Salut je veut afficher des données depuis postgres dans QtableWidget

    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
    import psycopg2
    from PyQt4 import QtGui
    from PyQt4.QtCore import *
    from PyQt4.QtGui import *
    import sys
    class MyPopup(QTableWidget):
     
        def __init__(self,*args):
            QTableWidget.__init__(self)
            self.setmydata()
        def setmydata(self):
            conn = psycopg2.connect(database="sammy", user="postgres", password="a", host="localhost", port="5432")
            patientTable = QtGui.QTableWidget()
            cur = conn.cursor()
            cur.execute("SELECT * from conn")
            row = 0
            while True:
               forma = cur.fetchall()
               if forma == None:
                    break
               for column, item in enumerate(forma):
                   self.patientTable.setItem(row, column, QtGui.QTableWidgetItem(str(item)))
                   row += 1
     
    if __name__ == "__main__":
        app = QtGui.QTableWidget(sys.argv)
        main_window = MyPopup()
        main_window.show()
        sys.exit(app.exec_())

    Code d'erreur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Traceback (most recent call last):
     File "3.py", line 51, in <module>
    app = QtGui.QTableWidget(sys.argv)
    TypeError: arguments did not match any overloaded call:
    QTableWidget(QWidget parent=None): argument 1 has unexpected type 'list'
    QTableWidget(int, int, QWidget parent=None): argument 1 has unexpected type 'list'

  2. #2
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2017
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2017
    Messages : 33
    Points : 14
    Points
    14
    Par défaut
    Merci quelqu'un peut peut m'aider s'il vous plaît ou si il y'a un autre méthode d'afficher les données

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

    C'est la toute 1ère ligne du "main" qui est fausse:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    app = QtGui.QTableWidget(sys.argv)
    Il s'agit ici de lancer la bibliothèque graphique avec:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    app = QtGui.QApplication(sys.argv)
    Le reste du code doit aussi être amélioré, en particulier les importations avec l'étoile attrape-tout: le temps qu'on gagne comme ça est largement perdu après en déverminage....
    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

  4. #4
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2017
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2017
    Messages : 33
    Points : 14
    Points
    14
    Par défaut
    Merci beaucoup pour votre réponse mais je suis débutant j'ai pas compris ce phrase " le temps qu'on gagne comme ça est largement perdu après en déverminage...."

  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,

    Citation Envoyé par Dr.root Voir le message
    ...j'ai pas compris ce phrase " le temps qu'on gagne comme ça est largement perdu après en déverminage...."
    Le déverminage (ou débogage), c'est la partie du développement où on répare les erreurs de codage qu'on a faites pour que le programme fonctionne. Le temps que tu passes en ce moment sur le forum en fait partie.

    Plus on code vite avec des "raccourcis" et des "facilités", plus cette partie augmente. A contrario, de la méthode et de la rigueur font gagner du temps.
    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
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2017
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2017
    Messages : 33
    Points : 14
    Points
    14
    Par défaut
    ah oui merci beaucoup Frère
    Tu peut m'aider a afficher depuis la base de données dans un Qtablewidget ?
    j'ai pas trouver une solution si'il vous plait
    j'en ai besoin
    Merci Beaucoup

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

    Tu te lances dans un développement bien compliqué pour le niveau apparent de tes connaissances: accroche-toi!

    Il y a 2 widgets différents pour afficher des données de type table de base de données: un QTableWidget ou un QTableView.

    Si tu veux seulement afficher des données, un QTableWidget convient. Il faut extraire les données par SQL, et inscrire ces données dans les cases du widget une par une.

    Mais si tu veux afficher les données d'une table, les modifier et enregistrer ces modifications dans la base de données, le QTableView est plus adapté. On utilise alors un "modèle" qui fait la liaison permanente entre la base de données et le widget d'affichage.

    Que souhaites-tu faire?
    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

  8. #8
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2017
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2017
    Messages : 33
    Points : 14
    Points
    14
    Par défaut
    je vous remercie infiniment pour votre aide Monsieur
    j espéré que vous êtes Toujours ici hhhhhh

  9. #9
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2017
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2017
    Messages : 33
    Points : 14
    Points
    14
    Par défaut
    Je veux utiliser QTableView je voix qui est plus pratique que QtableWidget et merci une autre fois

  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,

    Voilà un petit code exemple pour afficher et modifier une table d'une base de données avec PyQt.

    Le code est écrit avec Python 3 et PyQt5.
    Il faudra adapter pour PyQt4 parce que je ne travaille plus avec (il n'est d'ailleurs plus maintenu par riverbank). Il faudra au moins remplacer PyQt5 par PyQt4, et aussi QtWidgets par QtGui.

    Il faudra aussi adapter le système de gestion de base de données: j'utilise sqlite3 et non postgresql (très bon par ailleurs!). Il faudra donc réécrire les fonctions ouvrebaseqt et fermebaseqt pour postgresql.

    Il faudra enfin remplacer le nom de la base de données et le nom de la table à afficher définies au lancement du programme.

    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
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    #!/usr/bin/python
    # -*- coding: utf-8 -*-
    # Python 3
     
    import sys
    from PyQt5 import QtWidgets, QtCore, QtSql
     
    #############################################################################
    def ouvrebaseqt(basesql, contrainte=True):
        """ouvre la base 'basesql' de sqlite3 et renvoie la connexion ouverte
           (ou None si échec)
        """
     
        # tente d'ouvrir la base
        db = QtSql.QSqlDatabase.addDatabase("QSQLITE")
        db.setDatabaseName(basesql)
        if not db.open():
            db = None
     
        # active les contraites d'intégrité référentielles
        if (db != None) and contrainte:
            query = QtSql.QSqlQuery(db)
            req = "PRAGMA foreign_keys=on;"
            if not query.exec_(req):
                query.finish()    # désactive le curseur
                query = None
                fermebaseqt(db)  # ferme la base
                db = None
            if query != None:
                query.finish()    # désactive le curseur
     
        # renvoie la connexion ouverte (ou None si échec)
        return db
     
    #############################################################################
    def fermebaseqt(db):
        """ferme la base de données db
        """
        if db!=None:
            db.close()
     
    #############################################################################
    class VoirTableSql(QtWidgets.QMainWindow):
     
        def __init__(self, basesql, nomtable, parent=None):
            super(VoirTableSql, self).__init__(parent)
     
            self.setWindowTitle("Affichage de la table %s" % (nomtable,))
            self.resize(800, 600)
     
            # stocke les arguments passés
            self.basesql = basesql
            self.nomtable = nomtable
     
            # ouvre la base SQL
            self.db = ouvrebaseqt(self.basesql)
            if self.db == None:
                self.close() # impossible d'ouvrir la base: arrêt du programme
     
            # crée le modèle et sa liaison avec la base SQL
            self.model = QtSql.QSqlRelationalTableModel(self, self.db)
            # stratégie en cas de modification de données par l'utilisateur
            self.model.setEditStrategy(QtSql.QSqlTableModel.OnFieldChange)
     
            # crée la table et son lien avec le modèle
            self.vuetable = QtWidgets.QTableView(self)
            self.vuetable.setModel(self.model)
            self.vuetable.setItemDelegate(QtSql.QSqlRelationalDelegate(self.vuetable))
            # active le tri en cliquant sur les têtes de colonnes
            self.vuetable.setSortingEnabled(True)
     
            # positionne le QTableView dans la fenêtre
            self.setCentralWidget(QtWidgets.QFrame())
            posit = QtWidgets.QGridLayout()
            posit.addWidget(self.vuetable, 0, 0)
            self.centralWidget().setLayout(posit)
     
            # affiche la table demandée
            self.model.setTable(self.nomtable)
            self.model.select() # peuple le modèle avec les données de la table
     
            # trie si nécessaire selon la colonne 0
            self.model.sort(0, QtCore.Qt.AscendingOrder) # ou DescendingOrder
     
            # ajuste la largeur des colonnes en fonction de leurs contenus
            self.vuetable.resizeColumnsToContents()
     
        #========================================================================
        def closeEvent(self, event=None):
            """Méthode appelée automatiquement à la fermeture de la fenêtre
            """
            # ferme la base
            fermebaseqt(self.db)
            # et accepte la fermeture de la fenêtre
            event.accept() 
     
    #############################################################################
    if __name__ == "__main__":
     
        # lance la bibliothèque Qt
        app = QtWidgets.QApplication(sys.argv)
     
        # définit les paramètres: base de données et table à afficher
        basesql = "mabase.db3"
        nomtable = "matable"
     
        # lance la fenêtre
        fen = VoirTableSql(basesql, nomtable)
        fen.show()
     
        # lance la boucle de traitement des évènements
        sys.exit(app.exec_())
    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

Discussions similaires

  1. Pb de surlignage lors de compilation avec erreur
    Par cgone dans le forum Delphi
    Réponses: 4
    Dernier message: 07/11/2006, 15h38
  2. compilation avec gcc : erreurs bizard !!!
    Par CodeurNé dans le forum C
    Réponses: 2
    Dernier message: 23/09/2005, 18h09
  3. Erreur compilation avec <string>
    Par seal3 dans le forum SL & STL
    Réponses: 9
    Dernier message: 25/08/2005, 20h41
  4. Réponses: 3
    Dernier message: 22/08/2005, 18h28
  5. [FreePascal]Erreur de compilation avec Dev-Pascal
    Par youngeikichi dans le forum Free Pascal
    Réponses: 3
    Dernier message: 17/02/2005, 14h22

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