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 tableau - Forum Python
- Tkinter focus() ✓ - Forum Python
- Probleme tkinter injustifier - Forum Python
- Pygame ou tkinter ? - Forum Python
4 réponses
yg_be
Messages postés
24281
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 585
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()