Bonjour,

J'ai quelque chose de bizarre dans mon script. Il fonctionne très bien mais l'enregistrement dans la bdd ne se fait que lorsque la fenetre tkinter est fermée.
Auriez-vous une solution pour que l'enregistrement ou la mise à jour se fasse sans devoir fermer la fenetre

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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
import sqlite3
import creation
import cartouche
import ajout_supp
import tkinter
from pathlib import Path
import os
 
cart = cartouche.Cartouches()
 
def valider_scan(entry_code_barre):
    # recuperation du code barre
    code_barre = entry_code_barre.get()
 
    # vidage de l'entry
    entry_code_barre.delete(0, 'end')
 
    # connexion bdd
    chemin_bdd = Path(str(Path(os.getcwd()).parent)+r"\cartouche.db")
    connection = sqlite3.connect(chemin_bdd)
    curseur = connection.cursor()
 
    # test si le code barre existe
    nb_ligne = curseur.execute("""SELECT COUNT(*) FROM cartouches WHERE code_barre=?""", (code_barre, )).fetchone()[0]
 
    if nb_ligne == 0:
        # s'il n existe pas on ajoute
        creation.creation_cartouche(cart)
 
        curseur.execute("""INSERT INTO cartouches(nom, type, quantite, code_barre) VALUES(?, ?, ?, ?)""", (cart.nom, cart.type, 1, code_barre))
        connection.commit()
    else:
        # si le code barre existe on demande si on ajoute ou en supprime
        ajout_supp.ajout_supp_cartouche(cart)
 
        # recupere le nombre de cartouche
        nb_cartouche = curseur.execute("""SELECT quantite FROM cartouches WHERE code_barre=?""", (code_barre,)).fetchone()[0]   
 
        if cart.ajout == "ajout":
            # on ajoute une cartouche
            nb_cartouche += 1
 
            # on met a jour la valeur dans la bdd
            curseur.execute("""UPDATE cartouches SET quantite=? WHERE code_barre=?""", (nb_cartouche, code_barre))
            connection.commit()
 
        if cart.ajout == "supp":
            # on supprime une cartouche
            nb_cartouche -= 1
 
            # on met a jour la valeur dans la bdd
            curseur.execute("""UPDATE cartouches SET quantite=? WHERE code_barre=?""", (nb_cartouche, code_barre))
            connection.commit()
 
    # fermeture de la bdd
    connection.close()
 
"""
fenetre principale
"""
if __name__ == '__main__':
    win_scan = tkinter.Tk()
    win_scan.title("scan des codes barres des cartouches")
    win_scan.geometry("400x100")
 
    label_scan = tkinter.Label(win_scan, text="en attente de scan ...")
    entry_scan = tkinter.Entry(win_scan)
 
    label_scan.pack(padx=10, pady=10)
    entry_scan.pack(padx=10, pady=10)
 
    # permet d'entrer dans le entry
    entry_scan.focus_set()
 
    entry_scan.bind('<Return>',lambda e: valider_scan(entry_scan))
 
    win_scan.mainloop()