Site icon TechVidvan

Python Project – Expense Tracker

python expense tracker project

The Expense Tracker GUI application is a user-friendly interface for managing personal expenses. Built using Python’s Tkinter library, the application offers functionalities to add, view, and delete expenses stored in a JSON file (expenses.json).

Objectives of Python Expense Tracker

Project Setup

Required Libraries

The project requires the following standard Python libraries:

Prerequisites for Python Expense Tracker

Download the Python Expense Tracker Project

Please download the source code of the Python Expense Tracker Project: Python Expense Tracker Project Code.

Step-by-Step Implementation of Python Expense Tracker

1. Loading Expenses

def load_expenses():
   try:
       with open(DATA_FILE, 'r') as file:
           return json.load(file)
   except FileNotFoundError: 
       return []

Saving Expenses

def save_expenses(expenses):
   with open(DATA_FILE, 'w') as file:
       json.dump(expenses, file, indent=4)

2. Adding an Expense

def add_expense(amount, category, description):
   expenses = load_expenses()
   expense = {
       'amount': amount,
       'category': category,
       'description': description,
       'date': datetime.now().strftime('%Y-%m-%d %H:%M:%S')
   }
   expenses.append(expense)
   save_expenses(expenses)
   update_listbox()

3. Viewing Expenses

def view_expenses():
   expenses = load_expenses()
   return expenses

4. Deleting an Expense

def delete_expense(index):
   expenses = load_expenses()
   if 0 <= index < len(expenses):
       del expenses[index]
       save_expenses(expenses)
       update_listbox()

5. Adding & Deleting using GUI

def add_expense_gui():
   amount = float(amount_entry.get())
   category = category_entry.get()
   description = description_entry.get()
   add_expense(amount, category, description)
   clear_entries()


def delete_expense_gui():
   try:
       index = expenses_listbox.curselection()[0]
       delete_expense(index)
   except IndexError:
       pass

6. Update & Clear Entries

def update_listbox():
   expenses = view_expenses()
   expenses_listbox.delete(0, tk.END)
   for expense in expenses:
       expenses_listbox.insert(tk.END, f"{expense['date']}: {expense['category']} - ₹{expense['amount']} ({expense['description']})")


def clear_entries():
   amount_entry.delete(0, tk.END)
   category_entry.delete(0, tk.END)
   description_entry.delete(0, tk.END)

7. Tkinter Setup

root = tk.Tk()
root.title("Expense Tracker")


tk.Label(root, text="Amount:").grid(row=0, column=0, padx=10, pady=5)
amount_entry = tk.Entry(root)
amount_entry.grid(row=0, column=1, padx=10, pady=5)


tk.Label(root, text="Category:").grid(row=1, column=0, padx=10, pady=5)
category_entry = tk.Entry(root)
category_entry.grid(row=1, column=1, padx=10, pady=5)


tk.Label(root, text="Description:").grid(row=2, column=0, padx=10, pady=5)
description_entry = tk.Entry(root)
description_entry.grid(row=2, column=1, padx=10, pady=5)


add_button = tk.Button(root, text="Add Expense", command=add_expense_gui)
add_button.grid(row=3, column=0, columnspan=2, padx=10, pady=5)


delete_button = tk.Button(root, text="Delete Expense", command=delete_expense_gui)
delete_button.grid(row=4, column=0, columnspan=2, padx=10, pady=5)


expenses_listbox = tk.Listbox(root, width=50, height=10)
expenses_listbox.grid(row=5, column=0, columnspan=2, padx=10, pady=5)


update_listbox()


root.mainloop()

Python Expense Tracker Output

1. Application Interface

2. Add Expense

3. Added Expense

4. Delete Expense

5. Deleted Expense

Applications

Conclusion

The Expense Tracker GUI application, developed using Python and Tkinter, provides a robust solution for managing personal expenses. By focusing on user-friendly interaction and basic CRUD operations, the application meets fundamental requirements for effective expense tracking. Future development efforts can further enrich the application with advanced features to cater to diverse user needs and improve overall utility.

Exit mobile version