Dans une application graphique, après l'enregistrement des données, il est possible d'avoir un comportement sophistiqué.
Dans cet exemple, l'application se charge d'ajuster les données affichées dans le TreeView. Les Entry sont ensuite réinitialisés puis désactivés, de même que le bouton de soumission.
...
def enregistrer_click():
"""Modifie les données dans la BD et ajuste le tableau."""
global curseur
# ----------------------------------------------------------------------------
# retrouve les informations saisies
# ----------------------------------------------------------------------------
description_entree = description.get()
quantite_entree = quantite.get()
# réinitialise le message au cas où il y aurait eu un message lors de l'essai d'avant
message.configure(text='')
try:
# ----------------------------------------------------------------------------
# enregistre les modifications dans la base de données
# ----------------------------------------------------------------------------
requete = 'UPDATE items SET description=?, quantite=? WHERE id = ?'
curseur.execute(requete, (description_entree, quantite_entree, str(id)))
connexion.commit()
if curseur.rowcount > 0:
# ----------------------------------------------------------------------------
# ajuste les données dans le tableau
# ----------------------------------------------------------------------------
tableau.item(id, values=(description_entree, quantite_entree))
message.configure(text='L\'item a été modifié avec succès !')
else:
message.configure(text='L\'item à modifier n\'existe pas.', foreground='orange')
# ----------------------------------------------------------------------------
# réinitialise les widgets
# ----------------------------------------------------------------------------
description.delete(0, END) # doit être fait avant le disabled
description.configure(state='disabled')
quantite.delete(0, END)
quantite.configure(state='disabled')
description.focus_set()
bouton_enregistrer.configure(state='disabled')
except sqlite3.OperationalError as e:
message.configure(text='Un problème a empêché la modification de l\'item.', foreground='red')
traceback.print_exc(file=sys.stdout)
except Exception as e:
message.configure(text='Une erreur inattendue est survenue.', foreground='red')
traceback.print_exc(file=sys.stdout)
...
▼Publicité