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

GUI Python Discussion :

Récupérer la sélection d'un combobox pour sqlite3


Sujet :

GUI Python

  1. #1
    Membre du Club
    Homme Profil pro
    Programmation C#
    Inscrit en
    Décembre 2014
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 22
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Programmation C#

    Informations forums :
    Inscription : Décembre 2014
    Messages : 89
    Points : 48
    Points
    48
    Par défaut Récupérer la sélection d'un combobox pour sqlite3
    Bonsoir,
    J'ai utilisé sqlite3 pour ma gestion de base de données. J'ai voulu la tester en faisant un programme qui enregistre la valeur selectionné d'un combobox, mais ça ne marche pas. Pour moi ce serait le combo1.get() qui n'irai pas :

    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
    # -*- coding: cp1252 -*-
    from Tkinter import *
    import sqlite3
    import Tix
     
    def Affiche(evt):
     
        print varcombo.get()
     
    Fp = Tix.Tk()
     
    Fp.title("Test de sqlite 3")
     
    Fp.wm_state(newstate="zoomed")
     
    varcombo = Tix.StringVar()  
    combo1 = Tix.ComboBox(Fp, editable=1, dropdown=1, variable=varcombo, command = Affiche) 
    combo1.entry.config(state='readonly')
     
    combo1.insert(0, 'Chocolat')  
    combo1.insert(1, 'Vanille')
    combo1.pack()
     
    def sauvegarder():
        conn = sqlite3.connect('C:\Python27\sqlite\sqlite-dll-win32-x86-3080801\essai.db')
        c = conn.cursor()
        c.execute("INSERT INTO stocks VALUES (combobox.get())")
        conn.commit()
        conn.close()
        champ_label = Label(Fp, text="Sauvegardé !!!",background="blue")
        champ_label.pack()
        champ_label.after(2000, champ_label.destroy)                            
     
    Button(Fp, text="Quitter", command = Fp.destroy).pack(side=RIGHT)
     
    Button(Fp, text="Sauvegarder", command = sauvegarder).pack(side=LEFT)
     
    Fp.mainloop()
    Mais ça marque l'erreur suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Exception in Tkinter callback
    Traceback (most recent call last):
      File "C:\Python27\lib\lib-tk\Tkinter.py", line 1532, in __call__
        return self.func(*args)
      File "C:/Users/boubou/Desktop/Python/bd.py", line 29, in sauvegarder
        c.execute("INSERT INTO stocks VALUES (combobox.get())")
    OperationalError: near "(": syntax error
    Pourtant j'ai bien créé une table stocks dans ma base de données donc ca ne vient pas de la. Je vous remercie d'avance.

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

    Il serait bien d'apprendre à utiliser sqlite3 sans vouloir immédiatement l'attaquer depuis une interface graphique, car si ces deux sujets sont "compliqués", ils sont indépendants.
    Pour ce qui est de sqlite3, en écrivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    c.execute("INSERT INTO stocks VALUES (combobox.get())")
    vous demandez l'insertion de la chaîne de caractères "combobox.get()" dans l'unique colonne de votre table.
    Pour que çà fonctionne, il faudrait écrire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    c.execute("INSERT INTO stocks VALUES (?)", (combobox.get(),))
    histoire d'appeler la fonction combobox.get() et stocker son retour.

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

  3. #3
    Membre du Club
    Homme Profil pro
    Programmation C#
    Inscrit en
    Décembre 2014
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 22
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Programmation C#

    Informations forums :
    Inscription : Décembre 2014
    Messages : 89
    Points : 48
    Points
    48
    Par défaut
    Bonsoir,
    Je vous remercie de m'avoir repondu aussi rapidement. J'ai essayer votre methode mais il y a une erreur qui vient de .get:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Exception in Tkinter callback
    Traceback (most recent call last):
      File "C:\Python27\lib\lib-tk\Tkinter.py", line 1532, in __call__
        return self.func(*args)
      File "C:\Users\boubou\Desktop\Python\bd.py", line 29, in sauvegarder
        c.execute("INSERT INTO stocks VALUES (?)", (combo1.get(),))
      File "C:\Python27\lib\lib-tk\Tix.py", line 337, in __getattr__
        raise AttributeError, name
    AttributeError: get
    Je ne sais pas ce que cela peut signifier.

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

    Elle signifie que vous devez prendre le temps d'apprendre à utiliser les widgets Tix et sqlite3.

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

  5. #5
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    ...et aussi se poser la question: "Pourquoi ai-je créé varcombo ? Pour quel usage ?"

Discussions similaires

  1. [2.x] Récupérer la sélection d'un comboBox
    Par sf2_newb dans le forum Symfony
    Réponses: 6
    Dernier message: 30/01/2013, 16h23
  2. [OpenOffice][Base de données] Récupérer les données aprés sélection dans une combobox
    Par frack dans le forum OpenOffice & LibreOffice
    Réponses: 1
    Dernier message: 06/02/2009, 09h27
  3. Réponses: 13
    Dernier message: 08/09/2007, 10h34
  4. Renseigner des ListBox/ComboBox multi-colonnes - Récupérer la sélection
    Par ouskel'n'or dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 07/09/2007, 13h42
  5. [Delphi for PHP] Récupérer les données d'un Datagrid pour une combobox ou listbox
    Par Truebison dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 27/08/2007, 09h27

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