Python Project
Python Project
import tkinter as tk
class Expense:
self.category = category
self.amount = amount
class MonthlyBudget:
self.salary = salary
self.expenses = []
""" Add an expense and deduct from the house balance """
if amount > 0:
else:
def display_expenses(self):
total_expense = 0
total_expense += expense.amount
return summary
if not self.expenses:
return
ax.set_title("Expense Distribution")
canvas.draw()
data = {
"salary": self.salary,
"balance": self.balance
json.dump(data, f, indent=4)
try:
with open(filename, "r") as f:
data = json.load(f)
self.salary = data["salary"]
self.balance = data["balance"]
except FileNotFoundError:
self.salary = 0
self.expenses = []
self.balance = 0
if amount > 0:
self.balance += amount
else:
def create_gui():
# Initialize budget
budget = MonthlyBudget(0)
budget.load_data()
if budget.salary == 0:
salary = float(input("Enter your monthly salary: "))
budget.salary = salary
def add_expense():
category = category_var.get()
spender = spender_entry.get() # Get the spender's name from the input field
try:
amount = float(amount_entry.get())
if not spender:
return
amount_entry.delete(0, tk.END)
spender_entry.delete(0, tk.END)
except ValueError:
def show_expenses():
summary = budget.display_expenses()
if isinstance(widget, tk.Canvas):
widget.grid_forget()
budget.plot_expenses(root)
def save_and_exit():
budget.save_data()
root.destroy()
def add_balance():
try:
amount = float(balance_entry.get())
result = budget.add_balance(amount)
balance_entry.delete(0, tk.END)
except ValueError:
messagebox.showerror("Input Error", "Please enter a valid amount.")
def update_balance_label():
root = tk.Tk()
root.title("Expense Tracker")
category_var = tk.StringVar(root)
amount_entry = tk.Entry(root)
spender_entry = tk.Entry(root)
balance_entry = tk.Entry(root)
# Buttons
root.mainloop()
if __name__ == "__main__":
create_gui()