Open In App

Python – Compound Interest GUI Calculator using Tkinter

Last Updated : 09 Jul, 2024
Summarize
Comments
Improve
Suggest changes
Like Article
Like
Share
Report
News Follow

Python offers multiple options for developing a GUI (Graphical User Interface). Out of all the Python GUI Libraries, Tkinter is the most commonly used method. In this article, we will learn how to create a Compound Interest GUI Calculator application using Tkinter.

Let’s create a GUI-based Compound Interest Calculator application.

  • Importing the module – Tkinter
  • Create the main window (container)
  • Add any number of widgets to the main window.
  • Apply the event Trigger on the widgets.

Below is what the GUI will look like:

Capture

Steps to Create Compound Interest GUI Calculator using Tkinter

Importing the tkinter Library:

 from tkinter import *

This imports all classes and functions from the tkinter library, which is used to create the GUI.

Function to Clear All Entry Fields

This function clears the content of all entry fields and sets the focus back to the principal_field.

def clear_all():
    principal_field.delete(0, END)
    rate_field.delete(0, END)
    time_field.delete(0, END)
    compound_field.delete(0, END)
    principal_field.focus_set()

Function to Calculate Compound Interest:

This function retrieves values from the entry fields, calculates the compound interest, and inserts the result into the compound_field.

def calculate_ci():
    principal = int(principal_field.get())
    rate = float(rate_field.get())
    time = int(time_field.get())
    CI = principal * (pow((1 + rate / 100), time))
    compound_field.insert(10, CI)

Main Program:

This part initializes the main window of the GUI, sets the background color, window size, and title.

if __name__ == "__main__":
    root = Tk()
    root.configure(background = 'light green')
    root.geometry("400x250")
    root.title("Compound Interest Calculator")

Creating and Positioning Labels:

These lines create labels for the GUI and position them using the grid method.

label1 = Label(root, text = "Principal Amount(Rs) : ", fg = 'black', bg = 'red')
label2 = Label(root, text = "Rate(%) : ", fg = 'black', bg = 'red')
label3 = Label(root, text = "Time(years) : ", fg = 'black', bg = 'red')
label4 = Label(root, text = "Amount : ", fg = 'black', bg = 'red')

label1.grid(row = 1, column = 0, padx = 10, pady = 10)
label2.grid(row = 2, column = 0, padx = 10, pady = 10)
label3.grid(row = 3, column = 0, padx = 10, pady = 10)
label4.grid(row = 5, column = 0, padx = 10, pady = 10)

Creating and Positioning Entry Fields:

These lines create entry fields for user input and position them using the grid method.

principal_field = Entry(root)
rate_field = Entry(root)
time_field = Entry(root)
compound_field = Entry(root)

principal_field.grid(row = 1, column = 1, padx = 10, pady = 10)
rate_field.grid(row = 2, column = 1, padx = 10, pady = 10)
time_field.grid(row = 3, column = 1, padx = 10, pady = 10)
compound_field.grid(row = 5, column = 1, padx = 10, pady = 10)

Creating and Positioning Buttons:

These lines create buttons for submitting the form and clearing the fields, and position them using the grid method.

button1 = Button(root, text = "Submit", bg = "red", 
                 fg = "black", command = calculate_ci)
button2 = Button(root, text = "Clear", bg = "red",
                 fg = "black", command = clear_all)

button1.grid(row = 4, column = 1, pady = 10)
button2.grid(row = 6, column = 1, pady = 10)

Starting the GUI Event Loop:

root.mainloop()

Complete Code

# import all classes / functions from the tkinter
from tkinter import *

# Function for clearing the  
# contents of all entry boxes   
def clear_all() :

    # whole content of entry boxes is deleted 
    principal_field.delete(0, END)   
    rate_field.delete(0, END) 
    time_field.delete(0, END)
    compound_field.delete(0, END)
  
    # set focus on the principal_field entry box  
    principal_field.focus_set() 


# Function to find compound interest  
def calculate_ci(): 

    # get a content from entry box
    principal = int(principal_field.get())
    
    rate = float(rate_field.get())

    time = int(time_field.get())
    
    # Calculates compound interest  
    CI = principal * (pow((1 + rate / 100), time))

    # insert method inserting the  
    # value in the text entry box.
    compound_field.insert(10, CI)

    

# Driver code 
if __name__ == "__main__" : 
  
    # Create a GUI window 
    root = Tk() 
  
    # Set the background colour of GUI window 
    root.configure(background = 'light green') 
  
    # Set the configuration of GUI window 
    root.geometry("400x250") 
  
    # set the name of tkinter GUI window 
    root.title("Compound Interest Calculator")  
      
    # Create a Principal Amount : label 
    label1 = Label(root, text = "Principal Amount(Rs) : ", 
                   fg = 'black', bg = 'red') 
  
    # Create a Rate : label 
    label2 = Label(root, text = "Rate(%) : ", 
                   fg = 'black', bg = 'red') 
      
    # Create a Time : label 
    label3 = Label(root, text = "Time(years) : ", 
                   fg = 'black', bg = 'red')

    # Create a Compound Interest : label 
    label4 = Label(root, text = "Amount : ", 
                   fg = 'black', bg = 'red') 

    # grid method is used for placing  
    # the widgets at respective positions  
    # in table like structure .

    # padx keyword argument used to set padding along x-axis .
    # pady keyword argument used to set padding along y-axis . 
    label1.grid(row = 1, column = 0, padx = 10, pady = 10)  
    label2.grid(row = 2, column = 0, padx = 10, pady = 10)  
    label3.grid(row = 3, column = 0, padx = 10, pady = 10)
    label4.grid(row = 5, column = 0, padx = 10, pady = 10)

    # Create a entry box  
    # for filling or typing the information.
    principal_field = Entry(root)  
    rate_field = Entry(root)  
    time_field = Entry(root)
    compound_field = Entry(root)

    # grid method is used for placing  
    # the widgets at respective positions  
    # in table like structure .
    
    # padx keyword argument used to set padding along x-axis .
    # pady keyword argument used to set padding along y-axis . 
    principal_field.grid(row = 1, column = 1, padx = 10, pady = 10)  
    rate_field.grid(row = 2, column = 1, padx = 10, pady = 10)  
    time_field.grid(row = 3, column = 1, padx = 10, pady = 10)
    compound_field.grid(row = 5, column = 1, padx = 10, pady = 10)

    # Create a Submit Button and attached  
    # to calculate_ci function  
    button1 = Button(root, text = "Submit", bg = "red",  
                     fg = "black", command = calculate_ci) 
  
    # Create a Clear Button and attached  
    # to clear_all function  
    button2 = Button(root, text = "Clear", bg = "red",  
                     fg = "black", command = clear_all)
  
    button1.grid(row = 4, column = 1, pady = 10) 
    button2.grid(row = 6, column = 1, pady = 10)

    # Start the GUI  
    root.mainloop()
    

Output



Next Article

Similar Reads

three90RightbarBannerImg