Python GUI tkinter Scientific Calculator

Scientific GUI calculator using Tkinter in Python

Here we will learn to build a Scientific GUI (Graphical User Interface) calculator using tkinter module in Python.


Python Tkinter

The tkinter package is the standard Python interface to the Tk GUI toolkit.
With this module we can build Python based GUI applications.

Scientific GUI calculator using Tkinter


Program

import math as m
from tkinter import *

#Creating main window
root = Tk()
# Giving title to the window
root.title("Scientific Calculator")

# Function used to display values on to the screen Entry box
def enter(val):
if display.get() == "Invalid Input":
display.delete(0, END)
display.insert(END, val)

# Function executes when '=' button is pressed
# Evaluates the value and gives out the result
def EVAL():
try:
value = eval(display.get())
except:
value = "Invalid Input"
display.delete(0, END)
display.insert(0, value)

# Display Box
display = Entry(root, width=60, borderwidth=5)
display.grid(row=0, column=0, columnspan=5)

# Buttons
# Sine
sin = Button(root, text="sin", padx=23, pady=5, bg='#c2d6d6', command=lambda: enter("m.sin("))
# cosine
cos = Button(root, text="cos", padx=23, pady=5, bg='#c2d6d6', command=lambda: enter("m.cos("))
tangent
tan = Button(root, text="tan", padx=23, pady=5, bg='#c2d6d6', command=lambda: enter("m.tan("))
hyperbolic sine
sinh = Button(root, text="sinh", padx=20, pady=5, bg='#c2d6d6', command=lambda: enter("m.sinh("))
# hyperbolic cosine
cosh = Button(root, text="cosh", padx=20, pady=5, bg='#c2d6d6', command=lambda: enter("m.cosh("))
# hyperbolic tangent
tanh = Button(root, text="tanh", padx=20, pady=5, bg='#c2d6d6', command=lambda: enter("m.tanh("))
square root
sqrt = Button(root, text="√", padx=25, pady=5, bg='#c2d6d6', command=lambda: enter("m.sqrt("))
e = Button(root, text="e", padx=28, pady=5, bg='#c2d6d6', command=lambda: enter("m.e"))
pi = Button(root, text="Ï€", padx=25, pady=5, bg='#c2d6d6', command=lambda: enter("m.pi"))
expo = Button(root, text="X^", padx=22, pady=5, bg='#c2d6d6', command=lambda: enter("**"))
# factorial
fac = Button(root, text="X!", padx=25, pady=7, bg='#c2d6d6', command=lambda: enter("m.factorial("))
log = Button(root, text="log", padx=23, pady=7, bg='#c2d6d6', command=lambda: enter("m.log("))
log10 = Button(root, text="log10", padx=18, pady=7, bg='#c2d6d6', command=lambda: enter("m.log10("))
# Complex numbers
comp = Button(root, text="complex \n (real, imaginary)", padx=22, pady=0, command=lambda: enter("complex("))

p1 = Button(root, text="(", padx=28, pady=5, command=lambda: enter("("))
p2 = Button(root, text=")", padx=27, pady=5, command=lambda: enter(")"))
n0 = Button(root, text="0", padx=28, pady=5, bg='#66ffff', command=lambda: enter(0))
n1 = Button(root, text="1", padx=28, pady=5, bg='#66ffff', command=lambda: enter(1))
n2 = Button(root, text="2", padx=28, pady=5, bg='#66ffff', command=lambda: enter(2))
n3 = Button(root, text="3", padx=28, pady=5, bg='#66ffff', command=lambda: enter(3))
n4 = Button(root, text="4", padx=28, pady=5, bg='#66ffff', command=lambda: enter(4))
n5 = Button(root, text="5", padx=28, pady=5, bg='#66ffff', command=lambda: enter(5))
n6 = Button(root, text="6", padx=28, pady=5, bg='#66ffff', command=lambda: enter(6))
n7 = Button(root, text="7", padx=28, pady=5, bg='#66ffff', command=lambda: enter(7))
n8 = Button(root, text="8", padx=28, pady=5, bg='#66ffff', command=lambda: enter(8))
n9 = Button(root, text="9", padx=28, pady=5, bg='#66ffff', command=lambda: enter(9))
add = Button(root, text="+", padx=26, pady=5, bg='#66ffff', command=lambda: enter('+'))
sub = Button(root, text="-", padx=28, pady=5, bg='#66ffff', command=lambda: enter('-'))
mul = Button(root, text="*", padx=28, pady=5, bg='#66ffff', command=lambda: enter('*'))
div = Button(root, text="/", padx=28, pady=5, bg='#66ffff', command=lambda: enter('/'))
dot = Button(root, text=".", padx=29, pady=5, bg='#66ffff', command=lambda: enter('.'))

clear = Button(root, text="AC", padx=21, pady=5, bg='#ff8080', command=lambda: display.delete(0, END))
cut = Button(root, text="DEL", padx=20, pady=5, bg='#ffb3b3', command=lambda: display.delete(len(display.get())-1, END))
equal = Button(root, text="=", padx=25, pady=5, bg='#99ff99', command=lambda: EVAL())


#Providing position to the buttons
n7.grid(row=1, column=0)
n8.grid(row=1, column=1)
n9.grid(row=1, column=2)
cut.grid(row=1, column=3)
clear.grid(row=1, column=4)

n4.grid(row=2, column=0)
n5.grid(row=2, column=1)
n6.grid(row=2, column=2)
mul.grid(row=2, column=3)
div.grid(row=2, column=4)

n1.grid(row=3, column=0)
n2.grid(row=3, column=1)
n3.grid(row=3, column=2)
add.grid(row=3, column=3)
sub.grid(row=3, column=4)

n0.grid(row=4, column=0)
dot.grid(row=4, column=1)
e.grid(row=4, column=2)
pi.grid(row=4, column=3)
equal.grid(row=4, column=4)

sin.grid(row=5, column=0)
cos.grid(row=5, column=1)
tan.grid(row=5, column=2)
p1.grid(row=5, column=3)
p2.grid(row=5, column=4)

sinh.grid(row=6, column=0)
cosh.grid(row=6, column=1)
tanh.grid(row=6, column=2)
sqrt.grid(row=6, column=3)
expo.grid(row=6, column=4)

fac.grid(row=7, column=0)
log.grid(row=7, column=1)
log10.grid(row=7, column=2)
comp.grid(row=7, column=3, columnspan=2)



root.mainloop()



Output


Python GUI tkinter Scientific Calculator



Python GUI tkinter Scientific Calculator



Scientific Calculator



Module and methods used in the program

  • tkinter
    • Tk()
    • title()
    • Entry()
    • Button()
  • math
    • math.sin()
    • math.cos()
    • math.tan()
    • math.sinh()
    • math.cosh()
    • math.tanh()
    • math.sqrt()
    • math.e
    • math.pi
    • math.factorial()
    • math.log()
    • math.log10()

If you have any query, feel free to ask.

Post a Comment

If you have any query, feel free to ask.

Post a Comment (0)

Previous Post Next Post