Home » A simple python GUI calculator using TKInter

A simple python GUI calculator using TKInter

A simple python GUI calculator using TKInter

Hello everybody, Welcome back to programminginpython.com! Now am going to show you how to make a simple Python GUI application, basically, the app is a simple calculator which adds two numbers. I used TKInter which is a standard GUI package for Python. In the previous post, I covered the basic introduction to GUI programming in Python, here I will use those and also extend some other things to build this simple app. So get ready for a simple python GUI calculator using TKInter.

You can also watch the video on YouTube here

Ad:

July Promo - Limited Time Sale

Limited time sale - 50% OFF Learn in-demand data and AI skills on the 17th of July

Program on Github

Below are the screenshots, how what our basic app looks like,

A simple python GUI calculator using TKInter
A simple Python GUI calculator using TKInter

A simple python GUI calculator using TKInter
A simple Python GUI calculator using TKInter

 

Here I used, a grid layout for designing the layout, in the previous post, I told about pack() which sets the widgets automatically based on available space in the window, but here we can set the widgets where we want to place them.

Ad:

July Promo - Limited Time Sale

Limited time sale - 50% OFF Learn in-demand data and AI skills on the 17th of July

Firstly import and initialize TKInter,

import tkinter as tk
..
..
root = tk.Tk()

I also set the size of the app and its title,

root.geometry('400x200+100+200')
root.title('Simple Calculator')

I also added some labels and input fields to read the entered numbers,

labelTitle = tk.Label(root, text="Simple Calculator").grid(row=0, column=2)
labelNum1 = tk.Label(root, text="Enter a number").grid(row=1, column=0)
labelNum2 = tk.Label(root, text="Enter another number").grid(row=2, column=0)
labelResult = tk.Label(root)
labelResult.grid(row=7, column=2)

entryNum1 = tk.Entry(root,textvariable=number1).grid(row=1, column=2)
entryNum2 = tk.Entry(root,textvariable=number2).grid(row=2, column=2)

Then I add a button, when clicked, calculates the result and displays it in the label labelResult I initialized the above.

Program on Github

So when the button is clicked, a function is called which calculates the sum of both the numbers.

call_result = partial(call_result, labelResult, number1, number2) 
buttonCal = tk.Button(root, text="Calculate", command=call_result).grid(row=3, column=0)

The command parameter to Button function calls the call_resultfunction, which does the simple logic.

The call_result function.

def call_result(label_result, n1, n2):
    num1 = (n1.get())
    num2 = (n2.get())
    result = int(num1)+int(num2)
    label_result.config(text="Result is %d" % result)
    return

Program on GitHub

Feel free to look at my previous posts on Python GUI programming.

Program

__author__ = 'Avinash'

import tkinter as tk
from functools import partial


def call_result(label_result, n1, n2):
    num1 = (n1.get())
    num2 = (n2.get())
    result = int(num1)+int(num2)
    label_result.config(text="Result is %d" % result)
    return

root = tk.Tk()
root.geometry('400x200+100+200')
root.title('Simple Calculator')

number1 = tk.StringVar()
number2 = tk.StringVar()

labelTitle = tk.Label(root, text="Simple Calculator").grid(row=0, column=2)
labelNum1 = tk.Label(root, text="Enter a number").grid(row=1, column=0)
labelNum2 = tk.Label(root, text="Enter another number").grid(row=2, column=0)
labelResult = tk.Label(root)
labelResult.grid(row=7, column=2)

entryNum1 = tk.Entry(root, textvariable=number1).grid(row=1, column=2)
entryNum2 = tk.Entry(root, textvariable=number2).grid(row=2, column=2)
call_result = partial(call_result, labelResult, number1, number2)
buttonCal = tk.Button(root, text="Calculate", command=call_result).grid(row=3, column=0)
root.mainloop()

That’s it for this post guys, also feel free to look at other Python tutorials on GUI Programming.

Online Python Compiler

Leave a Reply

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