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

Tkinter Python Discussion :

Afficher le résultat d'une requête


Sujet :

Tkinter Python

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations forums :
    Inscription : Août 2005
    Messages : 93
    Points : 38
    Points
    38
    Par défaut Afficher le résultat d'une requête
    Bonjour,

    Je débute sous python et tkinter.

    Après quelques recherches, je ne trouve aucune documentation expliquant comment afficher le résultat d'une requête dans une fenêtre créée avec tkinter.

    Auriez-vous un exemple ?

    Où dois déjà me tourner vers un framework type PyQt5 ?

    merci

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 281
    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 281
    Points : 36 768
    Points
    36 768
    Par défaut
    Salut,

    Citation Envoyé par coyote90 Voir le message
    Après quelques recherches, je ne trouve aucune documentation expliquant comment afficher le résultat d'une requête dans une fenêtre créée avec tkinter.
    Il n'y en a pas car c'est la composition de ce qu'on peut faire avec une base de données et comment afficher un tableau (ou une liste de listes) avec tkinter (d'où que viennent ces données).

    Et le maestro qui réalise cette composition, c'est le codeur.

    Pour réaliser le côté tkinter vous avez à connaître le geometry manager grid et/ou utiliser des biblio. externes comme tktable et son wrapper Python ou une multilistbox: tkinter est une bibliothèque graphique assez light, utile pour apprendre à programmer et pour coder rapidement si vous avez déjà les bibliothèques d'extensions (publiques ou perso.).

    Si vous voulez des résultats rapides sans trop mettre les mains dans le cambouis, les TableView de PyQt sont plus faciles à mettre en œuvre pour les exemples simples.

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

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations forums :
    Inscription : Août 2005
    Messages : 93
    Points : 38
    Points
    38
    Par défaut
    Merci wiztricks pour ces quelques pistes.

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations forums :
    Inscription : Août 2005
    Messages : 93
    Points : 38
    Points
    38
    Par défaut
    Voici mon début de 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
     
    from tkinter import *
    import sqlite3
     
    root = Tk()
    conn = sqlite3.connect("test.sqlite")
    c = conn.cursor()
     
    Label(text= "Couleurs:",font=("Helvetica", 14)).grid(sticky =NW)
     
    c.execute("select ROWID, * from couleurs order by tri,couleur")
    resultats = c.fetchall()
    ctxt = StringVar()
    cbg = StringVar()
    cfg = StringVar()
    for lig in resultats:       
           label_couleur = Label(root,text= ""+lig[1]+"",bg=lig[2],fg=lig[3], width=10)
           label_couleur.grid(sticky =NW)       
     
           ctxt.set(str(lig[1]))# pb garde la dernière valeur en mémoire
           cbg.set(str(lig[2]))
           cfg.set(str(lig[3]))
     
           text_couleur = Entry(root, width = 10, textvariable=ctxt)
           text_couleur.grid(row = lig[0], column=2)
     
           text_bg = Entry(root, width = 10, textvariable=cbg)
           text_bg.grid(row = lig[0], column=3)
     
           text_fg = Entry(root, width = 10, textvariable=cfg)
           text_fg.grid(row = lig[0], column = 4 )
     
    c.close()
    conn.close()
     
    root.mainloop()
    root.destroy()
    Le problème est que le texte affiché dans les zones de texte Entry() correspond à la dernière ligne de la table.

    j'ai identifié la source, les variables ctxt, cfg, et cbg, mais comment créer des variables propres à chaque ligne ?

    merci pour votre aide.



    Le prochain objectif sera d'ajouter un bouton "Enregistrer" et un bouton "Annuler" pour mettre à jour sqlite

  5. #5
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 281
    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 281
    Points : 36 768
    Points
    36 768
    Par défaut
    Hu?

    La construction que vous avez écrite équivaut à:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    >>> a = 0
    >>> for x in range(3):
    ...     print (x)
    ...     a = x
    ...
    0
    1
    2
    Je ne vois pas comment espérer qu'en sortie de boucle on récupère autre que la dernière valeur assignée.

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

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations forums :
    Inscription : Août 2005
    Messages : 93
    Points : 38
    Points
    38
    Par défaut
    C'est bien le problème,
    et je ne pense pas que les variables ctxt cfg, cbg puissent être numérotées pour créer
    ctxt1 (ligne 1)
    ctxt2 (ligne 2)
    cela me semble lourd.

    il doit bien y avoir un autre moyen, mais lequel ?

  7. #7
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 281
    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 281
    Points : 36 768
    Points
    36 768
    Par défaut
    Salut,

    Citation Envoyé par coyote90 Voir le message
    il doit bien y avoir un autre moyen, mais lequel ?
    Ben vous pouvez faire à avec les objets list ou dict. Si vous ne les connaissez pas encore, prenez le temps de les maîtriser un peu. Tous les tutos en parlent.

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

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations forums :
    Inscription : Août 2005
    Messages : 93
    Points : 38
    Points
    38
    Par défaut
    merci pour cette piste.

Discussions similaires

  1. Afficher le résultat d'une requête avec des côtes
    Par sweet_hell dans le forum Langage SQL
    Réponses: 4
    Dernier message: 27/10/2006, 10h32
  2. [SQL] Afficher les résultats d'une requête sur plusieurs pages
    Par mealtone dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 07/09/2006, 13h20
  3. [SQL] Est-il possible d'afficher le résultat d'une requête dans un cadre
    Par dessinateurttuyen dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 18/07/2006, 17h52
  4. Réponses: 11
    Dernier message: 20/06/2006, 11h10
  5. Réponses: 5
    Dernier message: 14/06/2006, 15h19

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