Visualiser données sqlite dans tkinter
Résolu
Frewil
-
23 janv. 2022 à 18:00
Phil_1857 Messages postés 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 -
Phil_1857 Messages postés 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 -
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
yg_be
Messages postés
23541
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
6 juin 2025
Ambassadeur
1 584
23 janv. 2022 à 18:20
23 janv. 2022 à 18:20
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
yg_be
Messages postés
23541
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
6 juin 2025
1 584
24 janv. 2022 à 16:36
24 janv. 2022 à 16:36
C'est peut-être causé par ton environnement de programmation?
Frewil
>
yg_be
Messages postés
23541
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
6 juin 2025
24 janv. 2022 à 17:00
24 janv. 2022 à 17:00
En fait ca marche bien dans la console mais pas dans le widget treeview
yg_be
Messages postés
23541
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
6 juin 2025
1 584
>
Frewil
24 janv. 2022 à 17:48
24 janv. 2022 à 17:48
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))
Phil_1857
Messages postés
1872
Date d'inscription
lundi 23 mars 2020
Statut
Membre
Dernière intervention
28 février 2024
168
24 janv. 2022 à 17:58
24 janv. 2022 à 17:58
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()
Phil_1857
Messages postés
1872
Date d'inscription
lundi 23 mars 2020
Statut
Membre
Dernière intervention
28 février 2024
168
>
Frewil
25 janv. 2022 à 13:12
25 janv. 2022 à 13:12
Bonjour Frewil,
Puis-je aussi te suggérer d'ajouter cette ligne après la définition de L'Entry facture_elec :
Comme ça, le curseur de la souris est déjà dans la boite dès le lancement du programme, il n'y a plus qu'a taper la valeur
Puis-je aussi te suggérer d'ajouter cette ligne après la définition de L'Entry facture_elec :
entry_montant_facture_elec.focus()
Comme ça, le curseur de la souris est déjà dans la boite dès le lancement du programme, il n'y a plus qu'a taper la valeur