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 :

Récupération de données Sqlite3 et print dans un widget text Tkinter


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de lagratteCchouette
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    190
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 190
    Par défaut Récupération de données Sqlite3 et print dans un widget text Tkinter
    Bonjour,

    Je souhaite pouvoir après avoir récupérer des données dans ma table, les récupérer dans une fenêtre Tkinter et dans un widget type "text" afin ensuite de paramétrer un scroll.
    Mais là il me manque une notion, car j'ai ce message d'erreur. help please !

    [Running] python -u "c:\xxxxx\menesis_database_projet-04\Récupération des données sqlite.py"

    Traceback (most recent call last):

    File "c:\xxxx\menesis_database_projet-04\R�cup�ration des donn�es sqlite.py", line 24, in <module>

    citation_result = Text(root,result_citation.get('1.0', END)).pack()
    AttributeError: 'function' object has no attribute 'get'


    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
    # -*- coding: utf-8 -*-
     
    from tkinter import *
    import sqlite3
    import tkinter as tk
    import tkinter.ttk as ttk
     
    root = Tk()
     
    def result_citation(Event):
        #connexion = sqlite3.connect("basededonnees.db")  #BDD dans le fichier "basededonnees.db"
        connexion = sqlite3.connect('mnesis.db')
        curseur = connexion.cursor()  #Récupération d'un curseur
        #curseur.execute("SELECT * FROM scores")
        curseur.execute ("SELECT * FROM tb_citation")
        result = curseur.fetchall() # requête
        for rows in result:
            print("Auteur : ",rows[1]) # Choix de l'indice position 0,1,2
            print("Citation : ",rows[2]) # Choix de l'indice position 0,1,2
            print("Référence : ",rows[3]) # Choix de l'indice position 0,1,2
            print("----------------------------------") # Choix de l'indice position 0,1,2
     
    labelCitation = Label(root, text="Résultat des données citation" ).pack() 
    citation_result = Text(root,result_citation.get('1.0', END)).pack()
     
    root.mainloop()

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 718
    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 718
    Par défaut
    Salut,

    Essayez de comprendre le message d'erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    citation_result = Text(root,result_citation.get('1.0', END)).pack()
    AttributeError: 'function' object has no attribute 'get'
    Vous appliquez la méthode .get à result_citation qui n'est qu'une fonction (par ailleurs, jamais appelée dans le code que vous avez postée).

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

  3. #3
    Membre confirmé Avatar de lagratteCchouette
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    190
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 190
    Par défaut
    Merci, mais là je patine.

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 718
    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 718
    Par défaut
    Citation Envoyé par lagratteCchouette Voir le message
    Merci, mais là je patine.
    Ben, déjà il faut appeler la fonction, par exemple, en en faisant le callback associé à un Button.
    Et si cette fonction doit mettre à jour le widget Text, c'est à l'intérieur de la fonction que çà se passe.

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

  5. #5
    Membre confirmé Avatar de lagratteCchouette
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    190
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 190
    Par défaut
    Merci cela me permet de comprendre une partie de mon erreur.
    Effectivement, le get n'était pas approprié à la fonction, mais la récupération des données d'un champ.
    Ok pour moi...

    J'ai donc revu mon code dans cet esprit avec un bouton.
    Mais j'ai ce message.

    TypeError: argument of type 'function' is not iterable

    Voici donc 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
    # -*- coding: utf-8 -*-
     
    from tkinter import*
    import sqlite3
    import tkinter as tk
    import tkinter.ttk as ttk
     
    defresult_citation():
        connexion = sqlite3.connect('mnesis.db')
        curseur = connexion.cursor()  
        curseur.execute ("SELECT*FROM tb_citation")
        result = curseur.fetchall() # requête
        for rows in result:
             print("Auteur : ",rows[1]) # Choix de l'indice position 
             print("Citation : ",rows[2]) 
             print("Référence : ",rows[3])
             print("----------------------------------") 
     
    root = Tk()
    root.geometry('450x300')
     
    Buton = Button(root,text="Résulat",command=result_citation).pack()
    labelCitation = Label(root, text="Résultat des données citation" ).pack() 
    citation_result = Text(root,result_citation).pack()
     
    root.mainloop()

  6. #6
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 718
    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 718
    Par défaut
    C'est bien: votre fonction est maintenant appelée lorsqu'on clique sur un Button.
    Normalement, si vous mettez en commentaire la ligne 27, elle devrait afficher des choses sur la console (le résultat des "print").

    Reste à remplacer ces affichages par des insertions dans le widget Text (et au préalable regarder comment il fonctionne)

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

Discussions similaires

  1. [Python 3.X] Changer la couleur d'un caractère dans un widget Text (tkinter)
    Par Michel Voisin dans le forum Général Python
    Réponses: 6
    Dernier message: 04/11/2017, 12h00
  2. Réponses: 4
    Dernier message: 14/12/2009, 13h43
  3. Réponses: 4
    Dernier message: 20/06/2009, 11h26
  4. Réponses: 2
    Dernier message: 25/01/2007, 11h34
  5. Réponses: 12
    Dernier message: 20/04/2006, 14h23

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