Formation PUB400 : Python, 2018 Opérations CRUD avec tkinter

10.7 Confirmation après enregistrement avec tkinter


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.

Python

 

...

 

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)

 

...

 

Update dans une application graphique

▼Publicité

Veuillez noter que le contenu de cette fiche vous est partagé à titre gracieux, au meilleur de mes connaissances et sans aucune garantie.
Merci de partager !
Soumettre