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

Python Discussion :

insertion des données récupérer des (qLineEdit) et afficher dans un (QtableWidget) vers la base de donnes


Sujet :

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 insertion des données récupérer des (qLineEdit) et afficher dans un (QtableWidget) vers la base de donnes
    Bonjour a tous
    je suis entrain de créer une application en Python 2.7 et PyQt avec l'aide QtDesigner dans laquelle je me suis fait appel a inséré des hypothèse dans des QLineEdit et les afficher dans un QtableWidget pour les stocker dans ma base des données voici mon code :
    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
     
    class fenetre_hypothese(QtGui.QDialog, Ui_Hypthese):
        def __init__(self, parent=None):
            QtGui.QWidget.__init__(self, parent)
            self.ui = Ui_Hypthese()
            self.ui.setupUi(self)
            QtCore.QObject.connect(self.ui.afficher_h,QtCore.SIGNAL("clicked(bool)"),self.afficher_hf_clicked)
            QtCore.QObject.connect(self.ui.sauvegarder_h,QtCore.SIGNAL("clicked(bool)"),self.sauvgarder_hf_clicked)
     
        #***insertion et affichage des hypothèses
        def afficher_hf_clicked(self):
     
            id_h = self.ui.lineEdit_HFZ_ID.text()
            zone = self.ui.lineEdit_HFZ.text()
            fd = self.ui.lineEdit_HFF.text()
            opex = self.ui.lineEdit_HFO.text()
            milieu = self.ui.lineEdit_HFM.text()
            capex = self.ui.lineEdit_HFC.text()
     
     
            self.ui.tableWidget.setRowCount(6)
            self.ui.tableWidget.setColumnCount(6)
            self.ui.tableWidget.setHorizontalHeaderLabels(("ID_H;ZONE;FD;OPEX;MILIEU;CAPEX").split(";"))
     
            item0 = QtGui.QTableWidgetItem(id_h)
            self.ui.tableWidget.setItem(0,0, item0)
            item1 = QtGui.QTableWidgetItem(zone)
            self.ui.tableWidget.setItem(0,1, item1)
            item2 =QtGui.QTableWidgetItem(fd)
            self.ui.tableWidget.setItem(0,2, item2)
            item3 =QtGui.QTableWidgetItem(opex)
            self.ui.tableWidget.setItem(0,3, item3)
            item4 =QtGui.QTableWidgetItem(milieu)
            self.ui.tableWidget.setItem(0,4, item4)
            item5 =QtGui.QTableWidgetItem(capex)
            self.ui.tableWidget.setItem(0,5, item5)
     
        #***sauvegarde des hypothese dans la BD
        def sauvgarder_hf_clicked(self):
            cnx = mysql.connector.connect(user='root', password='',
                                          host='localhost',
                                          database='testdb')
            cursor = cnx.cursor()
            rows =self.ui.tableWidget.rowCount()
            columns = self.ui.tableWidget.columnCount()
     
            hypothese = list()
            for i in range(rows):
     
                id_hypoth =(self.ui.tableWidget.item(i,0)).text()
                zone =(self.ui.tableWidget.item(i,1)).text()
                fd =(self.ui.tableWidget.item(i,2)).text()
                opex =(self.ui.tableWidget.item(i,3)).text()
                milieu =(self.ui.tableWidget.item(i,4)).text()
                capex =(self.ui.tableWidget.item(i,5)).text()
            #for
                insert_hyp= ("INSERT INTO hypothese "
     
                        "(ID_HYP, ZONE, FD, OPEX, MILIEU, CAPEX)"
                        "VALUES (%s, %s, %s, %s, %s, %s)")
                data_hyp = (id_hypoth, zone, fd, opex, milieu, capex)
                cursor.execute(insert_hyp, data_hyp)
            cnx.commit()
            cursor.close()
            cnx.close()
    mon problème c'est dans le stockage dans la base de donnes ça me retourne cet erreur:
    id_hypoth =(self.ui.tableWidget.item(i,0)).text()
    AttributeError: 'NoneType' object has no attribute 'text'
    d'aide SVP
    Merci d'avance je vous serais très reconnaissant si vous pouviez m'aider pour améliorer mon code

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

    Les cas où la méthode .item renvoie None sont souvent quand on veut lire une case qui n'a jamais été initialisée, c'est à dire qui ne contient aucun QTableWidgetItem. En effet, à la création d'un QTableWidget, ses cases ne contiennent rien.

    Je n'ai pas épluché ton code, mais je constate que l'initialisation incrémente l'indice de colonne et que tu cherches à lire avec l'indice de ligne.
    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

  3. #3
    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
    Citation Envoyé par tyrtamos Voir le message
    Bonjour,


    Je n'ai pas épluché ton code, mais je constate que l'initialisation incrémente l'indice de colonne et que tu cherches à lire avec l'indice de ligne.
    D'abord Merci pour ta réponse mais je croie pas que le problème soit dans les indices car j'ai ajouter une autre fonction qui me permet de remplir le tableau d’après un fichier excel, les donnes du tableWidget se charge dans la base données sans aucun problème. donc le problème a ce que je pense pt être dans l’étape quand je les saisie dans les QLineEdit pour les afficher dans le tablwidget ,les mm valeurs ne se charge pas ds la bd.
    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
     
    #**fonction pour afficher les hypothese ds le tablwidget
     def afficher_hf_clicked(self):
     
            id_h = self.ui.lineEdit_HFZ_ID.text()
            zone = self.ui.lineEdit_HFZ.text()
            fd = self.ui.lineEdit_HFF.text()
            opex = self.ui.lineEdit_HFO.text()
            milieu = self.ui.lineEdit_HFM.text()
            capex = self.ui.lineEdit_HFC.text()
     
     
            self.ui.tableWidget.setRowCount(6)
            self.ui.tableWidget.setColumnCount(6)
            self.ui.tableWidget.setHorizontalHeaderLabels(("ID_H;ZONE;FD;OPEX;MILIEU;CAPEX").split(";"))
     
            item0 = QtGui.QTableWidgetItem(id_h)
            self.ui.tableWidget.setItem(0,0, item0)
            item1 = QtGui.QTableWidgetItem(zone)
            self.ui.tableWidget.setItem(0,1, item1)
            item2 =QtGui.QTableWidgetItem(fd)
            self.ui.tableWidget.setItem(0,2, item2)
            item3 =QtGui.QTableWidgetItem(opex)
            self.ui.tableWidget.setItem(0,3, item3)
            item4 =QtGui.QTableWidgetItem(milieu)
            self.ui.tableWidget.setItem(0,4, item4)
            item5 =QtGui.QTableWidgetItem(capex)
            self.ui.tableWidget.setItem(0,5, item5)
     
        #***sauvegarde des hypothese dans la BD
        def sauvgarder_hf_clicked(self):
            cnx = mysql.connector.connect(user='root', password='',
                                          host='localhost',
                                          database='testdb')
            cursor = cnx.cursor()
            rows =self.ui.tableWidget.rowCount()
            columns = self.ui.tableWidget.columnCount()
     
            hypothese = list()
            for i in range(rows):
     
                id_hypoth =(self.ui.tableWidget.item(i,0)).text()
                zone =(self.ui.tableWidget.item(i,1)).text()
                fd =(self.ui.tableWidget.item(i,2)).text()
                opex =(self.ui.tableWidget.item(i,3)).text()
                milieu =(self.ui.tableWidget.item(i,4)).text()
                capex =(self.ui.tableWidget.item(i,5)).text()
            #for
                insert_hyp= ("INSERT INTO hypothese "
     
                        "(ID_HYP, ZONE, FD, OPEX, MILIEU, CAPEX)"
                        "VALUES (%s, %s, %s, %s, %s, %s)")
                data_hyp = (id_hypoth, zone, fd, opex, milieu, capex)
                cursor.execute(insert_hyp, data_hyp)
            cnx.commit()
            cursor.close()
            cnx.close()
        #***importer les hypotheses d'un fichier excel:
        def importer_hf_clicked(self):
            fileName = unicode(QtGui.QFileDialog.getOpenFileName(self,'Open File','',".xls(*.xls)"))
            wb = xlrd.open_workbook(fileName)
            sh = wb.sheet_by_index(0)
            data = list()
            for x in range(sh.nrows):
                for y in range(sh.ncols):
                    data = sh.cell_value(x, y)  
                    self.ui.tableWidget.setRowCount(sh.nrows)
                    self.ui.tableWidget.setColumnCount(6)
                    self.ui.tableWidget.setHorizontalHeaderLabels(("ID_H;ZONE;FD;OPEX;MILIEU;CAPEX").split(";"))
                    itemm = QtGui.QTableWidgetItem(data)
                    self.ui.tableWidget.setItem(x, y, itemm)

  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
    Rebonjour
    après qlq temps je viens de trouver que la cause de l'erreur
    id_hypoth =(self.ui.tableWidget.item(i,0)).text()
    AttributeError: 'NoneType' object has no attribute 'text'
    s'agit d'avoir des cellule vide dans le QTablwidget, quand mon tableau n'avait pas de cellule vide l'insertion vers la base données s'effectue sans problème.
    Mais la question qui se pose c'est comment je peux ajouter des ligne a mon tableau si j'ai déjà défini le nbre de ligne setRowCount() avant.

    merci d'avance

Discussions similaires

  1. Réponses: 2
    Dernier message: 10/03/2015, 22h07
  2. Réponses: 1
    Dernier message: 11/10/2010, 14h31
  3. Réponses: 1
    Dernier message: 18/06/2010, 13h50
  4. Réponses: 4
    Dernier message: 15/05/2009, 13h29
  5. Récupérer ma base de donnée avec des tables en .frm uniqueme
    Par Michas dans le forum Administration
    Réponses: 5
    Dernier message: 31/08/2005, 13h57

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