Visualiser données sqlite dans tkinter
Résolu
Frewil
-
Phil_1857 Messages postés 1956 Statut Membre -
Phil_1857 Messages postés 1956 Statut Membre -
Bonjour,
Dans le code ci-dessous, je n'arrive pas à afficher les données déjà enregistrées dans la base de donnée créée quand je lance le code. Je ne peux que y voir celles que j'ajoute.
Je pense qu'il doit manquer une ligne de code, mais je ne sais pas laquelle.
Merci pour votre aide
Dans le code ci-dessous, je n'arrive pas à afficher les données déjà enregistrées dans la base de donnée créée quand je lance le code. Je ne peux que y voir celles que j'ajoute.
Je pense qu'il doit manquer une ligne de code, mais je ne sais pas laquelle.
Merci pour votre aide
import sqlite3 from tkinter import * from tkinter.ttk import Treeview from tkcalendar import DateEntry # create database if does't exist or connect to the database if already exists connection = sqlite3.connect("Appartement_database.db") print("Database created or connected successfully") cursor = connection.cursor() # create the window electricite window_electricite = Tk() window_electricite.title("Dépenses en électricité") window_electricite.geometry("800x500") window_electricite.config(background="lightgrey") # create the table Electricite cursor.execute( "CREATE TABLE IF NOT EXISTS Electricite (date_facture_elec TEXT, montant_facture_elec TEXT)") print("Electricite table created") # 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) # Create the treeview widget tree_elec = Treeview(window_electricite, columns=("Date", "Montant"), show="headings") tree_elec.heading('Date', text="Date") tree_elec.heading('Montant', text="Montant") tree_elec.place(x=370, y=25) def add_data_in_elec_table(): tree_elec.insert('', 'end', values=(entry_date_facture_elec.get(), entry_montant_facture_elec.get())) 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() # print database once updated cursor.execute("SELECT * FROM Electricite") result = cursor.fetchall() for row in result: print(row) # add command button to the Electricite window bouton1 = Button(window_electricite, text="Ajouter", command=add_data_in_elec_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()
A voir également:
- Tkinter treeview sqlite3
- Arborescence excel treeview ✓ - Forum VB / VBA
- Tkinter focus_set ✓ - Forum Python
- Tkinter tableau - Forum Python
- Probleme tkinter injustifier - Forum Python
- Pygame ou tkinter ? - Forum Python
4 réponses
bonjour,
quand je teste, je vois les anciennes et les nouvelles données.
comment testes-tu précisément?
quand je teste, je vois les anciennes et les nouvelles données.
comment testes-tu précisément?
Quand je ferme la fenêtre pour réouvre celle-ci, les données précédemment enregistrées ne sont pas visualisées
le programme ne donne aucune info sur l'endroit où se trouve le fichier, ni il doit le créer. pour mieux comprendre ce qui se passe, je ferais ainsi:
import os.path fn="Appartement_database.db" if os.path.exists(fn): print("fichier existant:",os.path.abspath(fn)) else: print("fichier absent") connection = sqlite3.connect(fn) print("Database created or connected successfully") print("fichier db:",os.path.abspath(fn))
Bonsoir,
Moi, pour visualiser TOUTES les données après mise à jour de la base, je ferais ça:
et pour visualiser tout dès le lancement du programme:
Moi, pour visualiser TOUTES les données après mise à jour de la base, je ferais ça:
def add_data_in_elec_table(): date_facture_elec = entry_date_facture_elec.get() montant_facture_elec = entry_montant_facture_elec.get() cursor.execute("INSERT INTO Electricite (date_facture_elec, montant_facture_elec) VALUES(?, ?)",(date_facture_elec, montant_facture_elec)) connection.commit() for item in tree_elec.get_children(): tree_elec.delete(item) cursor.execute("SELECT * FROM Electricite") result = cursor.fetchall() for row in result: tree_elec.insert('', 'end', values=(row[0], row[1]))
et pour visualiser tout dès le lancement du programme:
......... cursor.execute("SELECT * FROM Electricite") result = cursor.fetchall() for row in result: tree_elec.insert('', 'end', values=(row[0], row[1])) window_electricite.mainloop()