Comment construire un outil de suivi des dépenses en utilisant Python

Un outil de suivi des dépenses est un outil essentiel qui aide les particuliers et les entreprises à gérer leurs transactions financières. Il permet de créer des budgets, de classer les dépenses par catégories et d’analyser les habitudes de consommation.

Découvrez comment créer une application de suivi des dépenses, avec une interface graphique multiplateforme, en Python.

Les modules Tkinter, CSV et Matplotlib

Pour construire cette application de suivi des dépenses, vous aurez besoin des modules Tkinter, CSV et Matplotlib.

Tkinter vous permet de créer des applications de bureau. Il offre une variété de widgets tels que des boutons, des étiquettes et des zones de texte qui facilitent le développement d’applications.

Le module CSV est une bibliothèque Python intégrée qui permet de lire et d’écrire des fichiers CSV (Comma-Separated Values).

Avec Matplotlib, vous pouvez créer des visualisations interactives telles que des graphiques, des tracés et des diagrammes. Son utilisation avec des modules comme OpenCV peut également vous aider à maîtriser les techniques d’amélioration des images.

Pour installer ces modules, exécutez :

Définir la structure de l’application de suivi des dépenses

Vous pouvez trouver le code source de ce projet dans son dépôt GitHub.

Commencez par importer les modules nécessaires. Définissez une classe, ExpenseTrackerApp. Définissez le titre et les dimensions. Définissez une liste pour stocker les dépenses et une autre pour les catégories. Initialiser un StringVar nommé category_var et fixe sa valeur initiale à la première catégorie de la liste des catégories. Terminez en appelant la fonction create_widgets .

La méthode create_widgets est chargée d’ajouter des composants d’interface utilisateur à votre application. Créez un cadre pour les étiquettes et les entrées de l’enregistrement des dépenses. Créez six étiquettes : une pour l’en-tête, le montant de la dépense, la description de l’article, la catégorie, la date et la dépense totale. Définissez l’élément parent de chaque étiquette, le texte qu’elle doit afficher et son style de police.

Voir aussi :  Comment héberger des fichiers images sur Cloudinary dans une application React.

Créez trois widgets d’entrée et un widget Combobox pour obtenir l’entrée correspondante. Pour les widgets d’entrée, définissez l’élément parent, le style de police et la largeur. Définissez l’élément parent, la liste des valeurs, le style de police et la largeur pour les widgets Combobox. Lier catégorie_var afin que la valeur sélectionnée soit automatiquement mise à jour.

Définissez cinq boutons : Ajouter une dépense, Modifier une dépense, Supprimer une dépense, Sauvegarder les dépenses et Afficher le tableau des dépenses. Définissez l’élément parent de chacun d’eux, le texte qu’il doit afficher et la commande qu’il exécutera lorsque vous cliquerez dessus. Créez un cadre pour la zone de liste. Définissez l’élément parent, le style de police et la largeur.

Créez une barre de défilement verticale et placez-la sur le côté droit du cadre. Utilisez-la pour faire défiler le contenu de la boîte à liste. Organisez tous les éléments avec le rembourrage nécessaire et appelez update_total_label().

Définir les fonctionnalités de l’outil de suivi des dépenses

Définissez une méthode, add_expense. Récupère la valeur de la dépense, de l’article, de la catégorie et de la date. Si la valeur de la dépense et la date sont valides, ajoutez la dépense à la liste des dépenses. dépenses de la liste des dépenses. Insérez cet enregistrement dans la zone de liste et mettez-le en forme de manière appropriée. Une fois l’enregistrement inséré, supprimez les données saisies par l’utilisateur dans les zones de saisie pour les nouvelles données.

Dans le cas contraire, afficher un avertissement indiquant que les valeurs de dépense et de date ne peuvent être vides. Appel update_total_label.

Voir aussi :  Comment créer de superbes panoramas avec Python et OpenCV

Définissez une méthode, edit_expense. Récupérer l’index de l’enregistrement sélectionné et obtenir la dépense. Ouvrir une boîte de dialogue demandant de saisir la dépense. Si l’utilisateur a fourni une nouvelle dépense, modifiez la liste des dépenses en conséquence. Appeler la fonction refresh_list et update_total_label.

Définissez une méthode, delete_expense. Récupère l’index de l’enregistrement sélectionné et obtient la dépense. Transmettez l’index de l’entrée que vous souhaitez supprimer. Supprimez cette entrée de la zone de liste et appelez la fonction update_total_label.

Définissez une méthode, refresh_list. Supprimez l’enregistrement existant et ajoutez un nouvel enregistrement avec les valeurs mises à jour.

Définir une méthode, update_total_label. Calculer la somme de toutes les dépenses de la liste et la mettre à jour sur l’étiquette. Définissez une autre méthode, save_expenses. Créez et ouvrez un fichier CSV nommé dépenses.csv en mode écriture. Ajoutez les en-têtes de colonne au fichier CSV en tant que première ligne. Itérer sur chaque enregistrement de dépense et l’écrire en tant que ligne.

Définissez une méthode, show_expenses_chart. Définir un dictionnaire, totaux_catégorie. Interrogez le dictionnaire, category_totals. dépenses et convertit le montant des dépenses en valeur flottante. Enregistrez le montant total des dépenses pour chaque catégorie. Si la catégorie existe déjà dans le dictionnaire, incrémenter le total du montant des dépenses actuelles. Sinon, créer une nouvelle entrée avec le montant actuel des dépenses.

Extraire les catégories et les dépenses dans deux listes différentes. Créez une nouvelle figure pour le graphique avec la taille spécifiée. Créez un diagramme circulaire en utilisant la liste des dépenses comme données et la liste des catégories comme étiquette. Les autopct spécifie le format d’affichage des valeurs en pourcentage sur les tranches du graphique. Passer égal à plt.axis pour vous assurer que le camembert est dessiné sous forme de cercle. Définissez le titre du camembert et affichez-le.

Voir aussi :  Construire un système simple de stationnement de véhicules à l'aide de Java

Créer une instance de l’élément ExpenseTrackerApp . La classe mainloop() indique à Python de lancer la boucle d’événements Tkinter et d’écouter les événements jusqu’à ce que vous fermiez la fenêtre.

Tester les différentes fonctionnalités de l’outil de suivi des dépenses Python

Lorsque vous exécutez le programme, celui-ci lance une fenêtre d’application. Celle-ci comporte des champs de saisie pour enregistrer la dépense, la description de l’article, la catégorie et la date. Saisissez quelques données et cliquez sur le bouton Ajouter une dépense vous verrez que l’enregistrement est ajouté à la zone de liste. Le programme met également à jour le total des dépenses.

Sélectionnez un enregistrement et cliquez sur le bouton Modifier les dépenses et cliquez sur le bouton Modifier les dépenses . Une boîte de dialogue apparaît, vous permettant de mettre à jour l’enregistrement individuel.

En cliquant sur le bouton Supprimer les dépenses pour supprimer l’enregistrement sélectionné.

En appuyant sur le bouton Afficher le tableau des dépenses le programme affiche un diagramme circulaire. Le diagramme circulaire affiche les dépenses pour chaque catégorie avec son nom et son pourcentage.

Améliorer le suivi des dépenses

Vous pouvez ajouter une fonctionnalité de recherche pour permettre aux utilisateurs de trouver des dépenses spécifiques en fonction de leur description, du montant, de la catégorie ou de la date. Vous pouvez ajouter une option pour trier et filtrer les enregistrements. Localisez l’application pour prendre en charge différentes langues et formats de devises.

Vous pouvez également étendre l’application à la prise en charge des notifications. Permettez à l’utilisateur de définir des alertes pour l’empêcher de dépasser les limites de son budget ou pour mettre en évidence toute dépense inhabituelle.

Cliquez pour évaluer cet article !
[Total: Moyenne : ]

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *