Problème avec sqlite et tkinter

Résolu
Frewil -  
 Frewil -
Bonjour,

Avec le cde Python ci-dessous, j'ecrit toujours 0 dans la base de donnée et pas les valeurs entrées dans les champs correspondants.
Auriez-vous une idée?
Merci beaucoup
Cordialement

<import sqlite3
from tkinter import *
from tkcalendar import DateEntry


def send_data_to_electricite_table():
    connection = sqlite3.connect("Appartement_database.db")
    print("Database created or connected successfully")
    cursor = connection.cursor()
    cursor.execute(
        "CREATE TABLE IF NOT EXISTS Electricite (date_facture_elec TEXT, montant_facture_elec TEXT)")
    print("Electricite table created")
    cursor.execute("INSERT INTO Electricite (date_facture_elec, montant_facture_elec) VALUES(?, ?)", (date_facture_electricite.get(), montant_facture_electricite.get()))

    print("Electricity table updated successfully")
    connection.commit()
    connection.close()


window_electricite = Tk()
window_electricite.title("Dépenses en électricité")
window_electricite.geometry("800x500")
window_electricite.config(background="lightgrey")

# date entry
label_date_facture_elec = Label(window_electricite, text="Date de la facture", bg="lightgrey")
label_date_facture_elec.place(x=20, y=80)

entry_date_facture_elec = DateEntry(window_electricite, selectmode="day", textvar=date_facture_electricite)
entry_date_facture_elec.place(x=130, y=80)

# entry of the invoice amount
label_montant_facture_elec = Label(window_electricite, text="Montant", bg="lightgrey")
label_montant_facture_elec.place(x=20, y=110)
entry_montant_facture_elec = Entry(window_electricite, width=30, textvar=montant_facture_electricite)
entry_montant_facture_elec.place(x=130, y=110)

bouton1 = Button(window_electricite, text="Ajouter", command=send_data_to_electricite_table)
bouton1.place(x=50, y=180)

bouton2 = Button(window_electricite, text="Supprimer")
bouton2.place(x=112, y=180)

bouton1 = Button(window_electricite, text="Modifier")
bouton1.place(x=190, y=180)

window_electricite.mainloop()
create_window_electricite()



create_window_electricite()>

2 réponses

  1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     
    bonjour,
    as-tu envisagé de faire print() des valeurs avant insertion?
    Merci d'utiliser les balises de code quand tu partages du code: https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
    0
    1. Frewil
       
      Merci de ta réponse. J'ai l'impression d'avoir un tout autre problème, mais je n'arrive pas à le cerner.
      0
      1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > Frewil
         
        Tu n'obtiens aucun message d'erreur?
        0
      2. Frewil > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
         
        Effectivement:
        line 30, in <module>
        entry_date_facture_elec = DateEntry(window_electricite, selectmode="day", textvar=date_facture_electricite)
        NameError: name 'date_facture_electricite' is not defined
        0
  2. Frewil
     
    Je pense que je viens de trouver la solution.
    J'ai mal positionner mes variables dans le code.
    Le code suivant fonctionne:

    import sqlite3
    from tkinter import *
    from tkcalendar import DateEntry
    
    
    
    def send_data_to_electricite_table():
        connection = sqlite3.connect("Appartement_database.db")
        print("Database created or connected successfully")
        cursor = connection.cursor()
        cursor.execute(
            "CREATE TABLE IF NOT EXISTS Electricite (date_facture_elec TEXT, montant_facture_elec TEXT)")
        print("Electricite table created")
        date_facture_electricit = entry_date_facture_elec.get()
        montant_facture_electricit = entry_montant_facture_elec.get()
    
        cursor.execute("INSERT INTO Electricite (date_facture_elec, montant_facture_elec) VALUES(?, ?)", (date_facture_electricit, montant_facture_electricit))
    
        print("Electricity table updated successfully")
        connection.commit()
        connection.close()
    
    
    window_electricite = Tk()
    window_electricite.title("Dépenses en électricité")
    window_electricite.geometry("800x500")
    window_electricite.config(background="lightgrey")
    
    # date entry
    label_date_facture_elec = Label(window_electricite, text="Date de la facture", bg="lightgrey")
    label_date_facture_elec.place(x=20, y=80)
    
    entry_date_facture_elec = DateEntry(window_electricite, selectmode="day")
    
    entry_date_facture_elec.place(x=130, y=80)
    
    # entry of the invoice amount
    label_montant_facture_elec = Label(window_electricite, text="Montant", bg="lightgrey")
    label_montant_facture_elec.place(x=20, y=110)
    entry_montant_facture_elec = Entry(window_electricite, width=30)
    entry_montant_facture_elec.place(x=130, y=110)
    
    bouton1 = Button(window_electricite, text="Ajouter", command=send_data_to_electricite_table)
    bouton1.place(x=50, y=180)
    
    bouton2 = Button(window_electricite, text="Supprimer")
    bouton2.place(x=112, y=180)
    
    bouton1 = Button(window_electricite, text="Modifier")
    bouton1.place(x=190, y=180)
    
    window_electricite.mainloop()
    create_window_electricite()
    
    
    
    create_window_electricite()
    0