In this video we’ll build a cool Mortgage Calculator with Tkinter and Python.
Mortgage calculators are pretty simple to create. You just need a little bit of math that I’ll give you in this video.
payment = (monthly_rate / (1 – (1 + monthly_rate)**(-months))) * loan
Python Code: mortgage.py
(Github Code)
from tkinter import *
root = Tk()
root.title('Codemy.com - Mortgage Calculator')
root.iconbitmap('c:/gui/codemy.ico')
root.geometry("500x400")
def payment():
if amount_entry.get() and interest_entry.get() and term_entry.get():
# Convert Entry Boxes to numbers
years = int(term_entry.get())
months = years * 12
rate = float(interest_entry.get())
loan = int(amount_entry.get())
# Calculate The Loan
# Monthly Interest Rate
monthly_rate = rate / 100 / 12
# Get Our Payment
payment = (monthly_rate / (1 - (1 + monthly_rate)**(-months))) * loan
# Format Payment
payment = f"{payment:,.2f}"
# Output Payment to the screen
payment_label.config(text=f"Monthly Payment: ${payment}")
else:
payment_label.config(text="Hey! You Forgot To Enter Something...")
my_label_frame = LabelFrame(root, text="Mortgage Calculator")
my_label_frame.pack(pady=30)
my_frame = Frame(my_label_frame)
my_frame.pack(pady=10, padx=20)
# Define Labels and Entry Boxes
amount_label = Label(my_frame, text="Loan Amount")
amount_entry = Entry(my_frame, font=("Helvetica", 18))
interest_label = Label(my_frame, text="Interest Rate")
interest_entry = Entry(my_frame, font=("Helvetica", 18))
term_label = Label(my_frame, text="Term (years)")
term_entry = Entry(my_frame, font=("Helvetica", 18))
# Put Labels and Entry Boxes on the Screen
amount_label.grid(row=0, column=0)
amount_entry.grid(row=0, column=1)
interest_label.grid(row=1, column=0)
interest_entry.grid(row=1, column=1, pady=20)
term_label.grid(row=2, column=0)
term_entry.grid(row=2, column=1)
# Button
my_button = Button(my_label_frame, text="Calculate Payment", command=payment)
my_button.pack(pady=20)
# Output Label
payment_label = Label(root, text="", font=("Helvetica", 18))
payment_label.pack(pady=20)
root.mainloop()

Add comment