No Widget Added

Please add some widget in Offcanvs Sidebar

Shopping cart

shape
shape

Create Calculator app in Python

learn python programming, best python classes online, python courses near me, python in 2024

Let’s break down the components of this simple calculator program and explain each part in detail. This will help students understand how to build a basic GUI application in Python using tkinter.

Learning Objectives

  1. Basic Python Programming: Understanding functions, loops, and conditional statements.
  2. GUI Programming with Tkinter: Learning how to create windows, add widgets, and handle events.
  3. Basic Calculator Logic: Implementing basic arithmetic operations.

Here’s a simple example of a calculator with addition, subtraction, multiplication, and division functionalities:

import tkinter as tk

def on_button_click(char):
    current = display.get()
    display.delete(0, tk.END)
    display.insert(0, current + char)

def calculate():
    try:
        result = eval(display.get())
        display.delete(0, tk.END)
        display.insert(0, str(result))
    except Exception as e:
        display.delete(0, tk.END)
        display.insert(0, "Error")

def clear():
    display.delete(0, tk.END)

# Create the main window
root = tk.Tk()
root.title("Simple Calculator")

# Create the display
display = tk.Entry(root, width=16, font=('Arial', 24), bd=8, insertwidth=2, justify='right')
display.grid(row=0, column=0, columnspan=4)

# Create the buttons
buttons = [
    '7', '8', '9', '/',
    '4', '5', '6', '*',
    '1', '2', '3', '-',
    '0', '.', '=', '+'
]

row = 1
col = 0

for button in buttons:
    action = lambda x=button: on_button_click(x) if x != '=' else calculate()
    tk.Button(root, text=button, padx=20, pady=20, font=('Arial', 18), command=action).grid(row=row, column=col)
    col += 1
    if col > 3:
        col = 0
        row += 1

# Create the clear button
tk.Button(root, text='C', padx=20, pady=20, font=('Arial', 18), command=clear).grid(row=row, column=col, columnspan=4)

# Run the main event loop
root.mainloop()

In this code:

  • We create a main window using tk.Tk().
  • We add an entry widget to serve as the display for the calculator.
  • We define a list of buttons and their respective positions in the grid layout.
  • The on_button_click function updates the display when a button is clicked.
  • The calculate function evaluates the expression in the display using the eval function.
  • The clear function clears the display.

Program Breakdown

  1. Importing the Tkinter Library:
import tkinter as tk

This line imports the tkinter library, which provides tools for creating GUI applications.

Defining Functions:

  • Button Click Handler:
def on_button_click(char):
    current = display.get()
    display.delete(0, tk.END)
    display.insert(0, current + char)

This function is called whenever a button is clicked. It gets the current text from the display, appends the clicked button’s character, and updates the display.

Calculate Result:

def calculate():
    try:
        result = eval(display.get())
        display.delete(0, tk.END)
        display.insert(0, str(result))
    except Exception as e:
        display.delete(0, tk.END)
        display.insert(0, "Error")

This function is called when the equals (=) button is clicked. It evaluates the expression in the display using the eval function and shows the result. If there’s an error (e.g., division by zero), it catches the exception and displays “Error”.

Clear Display:

def clear():
    display.delete(0, tk.END)

This function clears the display when the clear (C) button is clicked.

Creating the Main Window:

root = tk.Tk()
root.title("Simple Calculator")

These lines create the main application window and set its title.

Creating the Display:

display = tk.Entry(root, width=16, font=('Arial', 24), bd=8, insertwidth=2, justify='right')
display.grid(row=0, column=0, columnspan=4)

This creates an entry widget, which serves as the display for the calculator. The grid method positions it in the window.

Creating Buttons:

buttons = [
    '7', '8', '9', '/',
    '4', '5', '6', '*',
    '1', '2', '3', '-',
    '0', '.', '=', '+'
]

row = 1
col = 0

for button in buttons:
    action = lambda x=button: on_button_click(x) if x != '=' else calculate()
    tk.Button(root, text=button, padx=20, pady=20, font=('Arial', 18), command=action).grid(row=row, column=col)
    col += 1
    if col > 3:
        col = 0
        row += 1

This block creates all the calculator buttons. It uses a loop to create each button, assign it a position in the grid, and link it to the appropriate function (on_button_click or calculate).

Creating the Clear Button:

tk.Button(root, text='C', padx=20, pady=20, font=('Arial', 18), command=clear).grid(row=row, column=col, columnspan=4)

This creates the clear button and positions it in the grid.

Running the Main Event Loop:

root.mainloop()
  1. This starts the main event loop of the application, allowing it to wait for user interactions.

Key Concepts to Learn

  1. Functions: Learn how to define and use functions to organize code.
  2. Event Handling: Understand how to handle events like button clicks.
  3. Tkinter Basics: Learn how to create windows, add widgets (buttons, entry fields), and use layout managers (grid).
  4. Exception Handling: Use try-except blocks to handle errors gracefully.
  5. String Manipulation: Understand how to work with strings to build and evaluate expressions.

Practical Steps

  1. Install Python: Make sure Python is installed on your computer.
  2. Learn Python Basics: Understand basic syntax, functions, and error handling.
  3. Explore Tkinter: Look at tutorials and documentation to get familiar with creating GUIs.
  4. Experiment: Modify the calculator program to add new features, change the layout, or improve the user interface.

By following these steps and understanding the concepts, students can build their own GUI applications in Python and gain a deeper understanding of both programming and user interface design.

Leave A Comment

Your email address will not be published. Required fields are marked *