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 :

PYQT, tableWidget et sqlite3


Sujet :

PyQt Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2019
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Décembre 2019
    Messages : 62
    Par défaut PYQT, tableWidget et sqlite3
    Bonjour à tous
    je souhaite récupérer le texte d'une table connectée avec sqlite3 afin de récupérer le rowid pour mettre à jour ma table.
    J'arrive à récupérer les lignes et colonnes de la tableWidget, changer un texte en mettant manuellement le rowid mais pour la récupération du texte j'ai toujours l'objet en sortie. Comment faire ?
    je débute et j'ai souvent ce problème

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        def changeCellule(self):
            row = self.tableWidget_2.currentRow()
            colonne = self.tableWidget_2.currentColumn()
            index = self.tableWidget_2.currentIndex()
    Merci

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

    Pour avoir une relation d'affichage et de mise à jour avec une base de données, ce n'est pas un QTableWidget qu'il faut mais un QTableView.

    Et la logique, c'est d'établir une relation permanente et automatique entre la base de données et la partie graphique avec un "modèle", par exemple un QSqlRelationalTableModel.

    Et l'édition des données pour faire des modifications nécessite un "delegate", comme par exemple un QSqlRelationalDelegate

    Avec tout ça, on peut faire des applications en même temps très puissantes et très pratiques à utiliser, mais le code peut être assez complexe.

    Regarde déjà la discussion ici: https://www.developpez.net/forums/d1...-modele-pyqt5/, et essaie d'exécuter le code pour comprendre comment ça marche.

    Doc de QtSql: https://doc.qt.io/qt-5/qtsql-index.html

  3. #3
    Membre confirmé
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2019
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Décembre 2019
    Messages : 62
    Par défaut affichage table dans Qtableview
    Bonjour et merci pour la réponse,
    j'ai repris ton code pour comprendre et il est très clair, un grand merci.
    je me connecte mais je n'arrive pas à afficher la table ? il manque une ligne de code ?

    merci

  4. #4
    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 salpat Voir le message
    je me connecte mais je n'arrive pas à afficher la table ? il manque une ligne de code ?
    Je viens de refaire la manip à partir d'un simple copier-coller du code affiché dans le forum:
    - code de création de la base => création de "mabase.db3" => ok
    - code mini => affichage correct de la table => ok
    - code plus complet => affichage correct de la table => ok

    Reste un éventuel problème de version ou d'OS? J'utilise Python 3.7, PyQt5 5.11 sur Windows 10.

  5. #5
    Membre confirmé
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2019
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Décembre 2019
    Messages : 62
    Par défaut Qtableview SQLITE ET LISTE
    Bonjour,
    Encore merci c'est ce que je voulais, pouvez-vous m'orienter, j'aimerai pouvoir cliquer sur la case et proposer une liste ?
    Merci

  6. #6
    Membre confirmé
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2019
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Décembre 2019
    Messages : 62
    Par défaut combobox tableview sqlite
    Bonjour,
    finalement en reprenant l'exemple c'est assez simple,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    editor = QtWidgets.QComboBox(parent)
                editor.addItem("test")
                editor.addItem("test1")
    encore merci à tyrtamos

  7. #7
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 110
    Par défaut
    Bonjour Salpat et Tyrtamos,

    Pour avoir une valeur dans un SELECT sans être obligé de le créer dans la table on utilise un UNION.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
        ...
        sql = "SELECT ' CHOISIR' as dummy FROM maTable UNION "
        sq l= sql + " SELECT col1 FROM matable ORDER BY col1;"
     
        cur = self.db.cursor()
        cur.execute(sql)
        result = cur.fetchall()
        ...
    Le tri se fait sur l'ensemble de l'union et non pas sur le SELECT qui l'utilise donc pour l'avoir toujours au début l'astuce consiste à débuter par un espace.

    ça donne ceci :
    getRecordsSql >> SELECT ' CHOISIR' as col1 FROM Categorie UNION SELECT nom FROM categorie ORDER BY nom;
    (' CHOISIR',)
    ('Assurance',)
    ('Salaire',)
    ('Voiture',)
    ...

    Cordialement,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 25/12/2012, 21h19
  2. [PyQt] [py2exe]
    Par Zorro dans le forum Py2exe
    Réponses: 2
    Dernier message: 05/05/2006, 13h36
  3. Réponses: 1
    Dernier message: 28/11/2005, 23h20
  4. [PyQt] Qt Designer et Qpixmap
    Par parp1 dans le forum PyQt
    Réponses: 2
    Dernier message: 17/06/2005, 12h04
  5. [PyQt] QImage
    Par Jbx 2.0b dans le forum PyQt
    Réponses: 1
    Dernier message: 01/02/2005, 23h06

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