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 :

Remplir un QcomboBox à partir d'une table Sqlite [QtSql]


Sujet :

PyQt Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Analyste programmeur
    Inscrit en
    Septembre 2015
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Algérie

    Informations professionnelles :
    Activité : Analyste programmeur
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2015
    Messages : 148
    Par défaut Remplir un QcomboBox à partir d'une table Sqlite
    Bonjour,

    Excusez-moi peut être que le problème que je pose a été déjà abordé.
    En résumé, je voudrai affiché dans un combobox une liste à partir d'une table. Je me suis inspiré d'un exemple que j'ai trouvé sur la page : http://www.voidynullness.net/blog/20...atabase-table/
    Seulement, le combobox n'affiche rien

    Vous voudrez m'aider pour résoudre ce problème et de progresser dans mon projet. Et si vous avez une solution meilleures, je suis preneur.
    Merci infiniment.

    Ci-joint, les deux fichiers sources


    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
     
    # -*- coding: utf-8 -*-
    # Form implementation generated from reading ui file 'menu1.ui'
    #
    # Created by: PyQt4 UI code generator 4.11.4
    #
    # WARNING! All changes made in this file will be lost!
     
    from PyQt4 import QtCore, QtGui
    try:
        _fromUtf8 = QtCore.QString.fromUtf8
    except AttributeError:
        def _fromUtf8(s):
            return s
    try:
        _encoding = QtGui.QApplication.UnicodeUTF8
        def _translate(context, text, disambig):
            return QtGui.QApplication.translate(context, text, disambig, _encoding)
    except AttributeError:
        def _translate(context, text, disambig):
            return QtGui.QApplication.translate(context, text, disambig)
     
    class Ui_MainWindow(object):
        def setupUi(self, MainWindow):
            MainWindow.setObjectName(_fromUtf8("MainWindow"))
            MainWindow.resize(605, 359)
            self.centralwidget = QtGui.QWidget(MainWindow)
            self.centralwidget.setObjectName(_fromUtf8("centralwidget"))
            self.comboBox = QtGui.QComboBox(self.centralwidget)
            self.comboBox.setGeometry(QtCore.QRect(160, 90, 301, 31))
            self.comboBox.setObjectName(_fromUtf8("comboBox"))
            MainWindow.setCentralWidget(self.centralwidget)
            self.menubar = QtGui.QMenuBar(MainWindow)
            self.menubar.setGeometry(QtCore.QRect(0, 0, 605, 18))
            self.menubar.setObjectName(_fromUtf8("menubar"))
            self.menuFichiers = QtGui.QMenu(self.menubar)
            self.menuFichiers.setObjectName(_fromUtf8("menuFichiers"))
            self.menuFactures = QtGui.QMenu(self.menubar)
            self.menuFactures.setObjectName(_fromUtf8("menuFactures"))
            self.menuM_moire = QtGui.QMenu(self.menubar)
            self.menuM_moire.setObjectName(_fromUtf8("menuM_moire"))
            MainWindow.setMenuBar(self.menubar)
            self.statusbar = QtGui.QStatusBar(MainWindow)
            self.statusbar.setObjectName(_fromUtf8("statusbar"))
            MainWindow.setStatusBar(self.statusbar)
            self.actionQuitter = QtGui.QAction(MainWindow)
            self.actionQuitter.setObjectName(_fromUtf8("actionQuitter"))
            self.menuFichiers.addAction(self.actionQuitter)
            self.menuFichiers.addSeparator()
            self.menubar.addAction(self.menuFichiers.menuAction())
            self.menubar.addAction(self.menuFactures.menuAction())
            self.menubar.addAction(self.menuM_moire.menuAction())
     
            self.retranslateUi(MainWindow)
            QtCore.QObject.connect(self.comboBox, QtCore.SIGNAL(_fromUtf8("currentIndexChanged(int)")), MainWindow.show)
            QtCore.QMetaObject.connectSlotsByName(MainWindow)
     
        def retranslateUi(self, MainWindow):
            MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow", None))
            self.comboBox.setAccessibleDescription(_translate("MainWindow", "<html><head/><body><p><br/></p></body></html>", None))
            self.menuFichiers.setTitle(_translate("MainWindow", "Fichiers", None))
            self.menuFactures.setTitle(_translate("MainWindow", "Factures", None))
            self.menuM_moire.setTitle(_translate("MainWindow", "Mémoire", None))
            self.actionQuitter.setText(_translate("MainWindow", "Quitter", None))
    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
     
    import sys
    import os
    from PyQt4.QtCore import *
    from PyQt4.QtGui import *
    from PyQt4.QtSql import *
    from menu1 import Ui_MainWindow
     
    CONFIG_DATABASE_PATH = "./"
    CONFIG_DATABASE_NAME = "DBFM.db"
     
    class Fenetre(QMainWindow , Ui_MainWindow):
     
        def __init__(self):
            QMainWindow.__init__(self)
            self.setupUi(self)
            self.setWindowTitle("Exemple Utilisation d'un ComboBox")
            self.model = QSqlTableModel(self)
            self.model.setTable("CategoriesClients")
            self.model.select()
     
            self.comboBox.setModel(self.model)
            self.comboBox.setModelColumn(
                            self.model.fieldIndex("CategorieLibelle"))
        def data():
            filename = os.path.join(CONFIG_DATABASE_PATH,
                                    CONFIG_DATABASE_NAME)
            db= QSqlDatabase.addDatabase("QSQLITE")
            db.setDatabaseName(filename)
            if not db.open():
                QMessageBox.warning(None, "Combo Box Example",
                QString("Database Error: %1").arg(db.lastError().text()))
            sys.exit(1)
    app = QApplication(sys.argv)
    window = Fenetre()
    window.show()
    app.exec_()

  2. #2
    Membre chevronné
    Homme Profil pro
    Responsable du parc et des réseaux de télécommunication
    Inscrit en
    Mai 2003
    Messages
    290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable du parc et des réseaux de télécommunication
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2003
    Messages : 290
    Par défaut
    Bonjour,
    Tu n'appelles pas ta fonction data(). Tu ne te connectes donc pas à ta db.

  3. #3
    Membre confirmé
    Homme Profil pro
    Analyste programmeur
    Inscrit en
    Septembre 2015
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Algérie

    Informations professionnelles :
    Activité : Analyste programmeur
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2015
    Messages : 148
    Par défaut
    Merci pierjean, vous voudrez bien m'indiquer comment appeler la fonction data() vous voyez que je suis un novice dans ce domaine
    Cordialement.

  4. #4
    Membre chevronné
    Homme Profil pro
    Responsable du parc et des réseaux de télécommunication
    Inscrit en
    Mai 2003
    Messages
    290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable du parc et des réseaux de télécommunication
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2003
    Messages : 290
    Par défaut
    Tu devrais sortir la fonction data() de ta classe Fenetre, et l'appeler avant de créer ton QSqlTableModel.
    ex :
    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
    import sys
    import os
    from PyQt4.QtCore import *
    from PyQt4.QtGui import *
    from PyQt4.QtSql import *
    from menu1 import Ui_MainWindow
     
    CONFIG_DATABASE_PATH = "./"
    CONFIG_DATABASE_NAME = "DBFM.db"
     
    class Fenetre(QMainWindow , Ui_MainWindow):
     
        def __init__(self):
            QMainWindow.__init__(self)
            self.setupUi(self)
            self.setWindowTitle("Exemple Utilisation d'un ComboBox")
            self.model = QSqlTableModel(self)
            self.model.setTable("CategoriesClients")
            self.model.select()
     
            self.comboBox.setModel(self.model)
            self.comboBox.setModelColumn(
                            self.model.fieldIndex("CategorieLibelle"))
    def data():
    	filename = os.path.join(CONFIG_DATABASE_PATH,
    				CONFIG_DATABASE_NAME)
    	db= QSqlDatabase.addDatabase("QSQLITE")
    	db.setDatabaseName(filename)
    	if not db.open():
    		QMessageBox.warning(None, "Combo Box Example",
    		QString("Database Error: %1").arg(db.lastError().text()))
    		sys.exit(1)
     
    app = QApplication(sys.argv)
    data()
    window = Fenetre()
    window.show()
    app.exec_()

  5. #5
    Membre confirmé
    Homme Profil pro
    Analyste programmeur
    Inscrit en
    Septembre 2015
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Algérie

    Informations professionnelles :
    Activité : Analyste programmeur
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2015
    Messages : 148
    Par défaut
    Bonjour pierjean,

    Excusez mon retard de vous répondre, j'ai modifié le code comme vous m'avez dit mais à l'exécution du code la fenêtre principale de ne s'affiche pas. Un message d'erreur s'affiche sur la console : Exit Code : 1
    Merci pour votre patience.

  6. #6
    Membre confirmé
    Homme Profil pro
    Analyste programmeur
    Inscrit en
    Septembre 2015
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Algérie

    Informations professionnelles :
    Activité : Analyste programmeur
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2015
    Messages : 148
    Par défaut
    Re-Bonjour pierjean,

    J'ai trouvé l'erreur c'était un problème d'indentation à partir de "if" jusqu'à "sys.exit(1)


    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
     
    def data():
        #Connexion à la base de données
            filename = os.path.join(CONFIG_DATABASE_PATH,
                                    CONFIG_DATABASE_NAME)
            db= QSqlDatabase.addDatabase("QSQLITE")
            db.setDatabaseName(filename)
            if not db.open():
                QMessageBox.warning(None, "Combo Box Example",
                     QString("Database Error: %1").arg(db.lastError().text()))
                sys.exit(1)
    app = QApplication(sys.argv)
    data()
    window = Fenetre()
    window.show()
    app.exec_()
    Ainsi, le code juste et qui marche est le suivant :
    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
     
     
    import sys
    import os
    from PyQt4.QtCore import *
    from PyQt4.QtGui import *
    from PyQt4.QtSql import *
    from menu1 import Ui_MainWindow
     
    CONFIG_DATABASE_PATH = "./"
    CONFIG_DATABASE_NAME = "DBFM.db"
     
    class Fenetre(QMainWindow , Ui_MainWindow):
     
        def __init__(self):
            QMainWindow.__init__(self)
            self.setupUi(self)
            self.setWindowTitle("Exemple Utilisation d'un ComboBox")
     
            self.model = QSqlTableModel(self)
            self.model.setTable("CategoriesClients")
            self.model.select()
            self.comboBox.setModel(self.model)
            self.comboBox.setModelColumn(
                            self.model.fieldIndex("CategorieLibelle"))
     
    def data():
        #Connexion à la base de données
            filename = os.path.join(CONFIG_DATABASE_PATH,
                                    CONFIG_DATABASE_NAME)
            db= QSqlDatabase.addDatabase("QSQLITE")
            db.setDatabaseName(filename)
            if not db.open():
                QMessageBox.warning(None, "Combo Box Example",
                     QString("Database Error: %1").arg(db.lastError().text()))
                sys.exit(1)
    app = QApplication(sys.argv)
    data()
    window = Fenetre()
    window.show()
    app.exec_()

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

Discussions similaires

  1. Remplir un select à partir d'une table bdd
    Par Hind4Dev dans le forum Servlets/JSP
    Réponses: 9
    Dernier message: 19/02/2016, 20h37
  2. [Dojo] Remplir un Grid à partir d'une table SQL
    Par lagoule dans le forum Bibliothèques & Frameworks
    Réponses: 3
    Dernier message: 10/06/2009, 11h13
  3. [MySQL] Remplir un array à partir d'une table
    Par Dauphin dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 26/06/2007, 07h25
  4. Réponses: 4
    Dernier message: 01/06/2007, 13h54
  5. Réponses: 12
    Dernier message: 28/11/2006, 15h34

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