GeeksforGeeks App
Open App
Browser
Continue

# Scientific GUI Calculator using Tkinter in Python

Prerequisite: Python GUI – tkinter

In this article, we are going to create GUI Scientific Calculator using Python. As you can see, calculating large numbers nowadays is difficult or time-consuming. We’ve created a simple Scientific Calculator GUI using Python that allows you to perform simple and complex calculations. To implement GUI we will use the Tkinter module of Python.

## Stepwise Implementation

Step 1: Import module

## Python3

 `from` `tkinter ``import` `*``import` `math``import` `tkinter.messagebox`

Step 2:  Here we will create geometry or a so-called layout for the GUI of the calculator by using Tkinter.

## Python3

 `root ``=` `Tk()` `# sets the name on the top of the gui``root.title(``"Scientific Calculator"``)` `# sets the background color of the calculator``# as white``root.configure(background ``=` `'white'``)` `# fixed the width and height of the gui,``# hence can't be expanded/stretched``root.resizable(width``=``False``, height``=``False``)` `# sets the geometry``root.geometry(``"480x568+450+90"``)` `# holds the buttons in the calculator,``# act as a container for numbers and operators``calc ``=` `Frame(root)` `# create a grid like pattern of the frame``# i.e buttons``calc.grid()`

Step 3: Now we will create a class in which we will create all the functions of the scientific calculator so that they can be called and perform easily.

## Python3

 `class` `Calc():``    ``def` `__init__(``self``):``        ``self``.total ``=` `0``        ``self``.current ``=` `''``        ``self``.input_value ``=` `True``        ``self``.check_sum ``=` `False``        ``self``.op ``=` `''``        ``self``.result ``=` `False` `    ``def` `numberEnter(``self``, num):``        ``self``.result ``=` `False``        ``firstnum ``=` `txtDisplay.get()``        ``secondnum ``=` `str``(num)``        ``if` `self``.input_value:``            ``self``.current ``=` `secondnum``            ``self``.input_value ``=` `False``        ``else``:``            ``if` `secondnum ``=``=` `'.'``:``                ``if` `secondnum ``in` `firstnum:``                    ``return``            ``self``.current ``=` `firstnum``+``secondnum``        ``self``.display(``self``.current)` `    ``def` `sum_of_total(``self``):``        ``self``.result ``=` `True``        ``self``.current ``=` `float``(``self``.current)``        ``if` `self``.check_sum ``=``=` `True``:``            ``self``.valid_function()``        ``else``:``            ``self``.total ``=` `float``(txtDisplay.get())` `    ``def` `display(``self``, value):``        ``txtDisplay.delete(``0``, END)``        ``txtDisplay.insert(``0``, value)` `    ``def` `valid_function(``self``):``        ``if` `self``.op ``=``=` `"add"``:``            ``self``.total ``+``=` `self``.current``        ``if` `self``.op ``=``=` `"sub"``:``            ``self``.total ``-``=` `self``.current``        ``if` `self``.op ``=``=` `"multi"``:``            ``self``.total ``*``=` `self``.current``        ``if` `self``.op ``=``=` `"divide"``:``            ``self``.total ``/``=` `self``.current``        ``if` `self``.op ``=``=` `"mod"``:``            ``self``.total ``%``=` `self``.current``        ``self``.input_value ``=` `True``        ``self``.check_sum ``=` `False``        ``self``.display(``self``.total)` `    ``def` `operation(``self``, op):``        ``self``.current ``=` `float``(``self``.current)``        ``if` `self``.check_sum:``            ``self``.valid_function()``        ``elif` `not` `self``.result:``            ``self``.total ``=` `self``.current``            ``self``.input_value ``=` `True``        ``self``.check_sum ``=` `True``        ``self``.op ``=` `op``        ``self``.result ``=` `False` `    ``def` `Clear_Entry(``self``):``        ``self``.result ``=` `False``        ``self``.current ``=` `"0"``        ``self``.display(``0``)``        ``self``.input_value ``=` `True` `    ``def` `All_Clear_Entry(``self``):``        ``self``.Clear_Entry()``        ``self``.total ``=` `0` `    ``def` `pi(``self``):``        ``self``.result ``=` `False``        ``self``.current ``=` `math.pi``        ``self``.display(``self``.current)` `    ``def` `tau(``self``):``        ``self``.result ``=` `False``        ``self``.current ``=` `math.tau``        ``self``.display(``self``.current)` `    ``def` `e(``self``):``        ``self``.result ``=` `False``        ``self``.current ``=` `math.e``        ``self``.display(``self``.current)` `    ``def` `mathPM(``self``):``        ``self``.result ``=` `False``        ``self``.current ``=` `-``(``float``(txtDisplay.get()))``        ``self``.display(``self``.current)` `    ``def` `squared(``self``):``        ``self``.result ``=` `False``        ``self``.current ``=` `math.sqrt(``float``(txtDisplay.get()))``        ``self``.display(``self``.current)` `    ``def` `cos(``self``):``        ``self``.result ``=` `False``        ``self``.current ``=` `math.cos(math.radians(``float``(txtDisplay.get())))``        ``self``.display(``self``.current)` `    ``def` `cosh(``self``):``        ``self``.result ``=` `False``        ``self``.current ``=` `math.cosh(math.radians(``float``(txtDisplay.get())))``        ``self``.display(``self``.current)` `    ``def` `tan(``self``):``        ``self``.result ``=` `False``        ``self``.current ``=` `math.tan(math.radians(``float``(txtDisplay.get())))``        ``self``.display(``self``.current)` `    ``def` `tanh(``self``):``        ``self``.result ``=` `False``        ``self``.current ``=` `math.tanh(math.radians(``float``(txtDisplay.get())))``        ``self``.display(``self``.current)` `    ``def` `sin(``self``):``        ``self``.result ``=` `False``        ``self``.current ``=` `math.sin(math.radians(``float``(txtDisplay.get())))``        ``self``.display(``self``.current)` `    ``def` `sinh(``self``):``        ``self``.result ``=` `False``        ``self``.current ``=` `math.sinh(math.radians(``float``(txtDisplay.get())))``        ``self``.display(``self``.current)` `    ``def` `log(``self``):``        ``self``.result ``=` `False``        ``self``.current ``=` `math.log(``float``(txtDisplay.get()))``        ``self``.display(``self``.current)` `    ``def` `exp(``self``):``        ``self``.result ``=` `False``        ``self``.current ``=` `math.exp(``float``(txtDisplay.get()))``        ``self``.display(``self``.current)` `    ``def` `acosh(``self``):``        ``self``.result ``=` `False``        ``self``.current ``=` `math.acosh(``float``(txtDisplay.get()))``        ``self``.display(``self``.current)` `    ``def` `asinh(``self``):``        ``self``.result ``=` `False``        ``self``.current ``=` `math.asinh(``float``(txtDisplay.get()))``        ``self``.display(``self``.current)` `    ``def` `expm1(``self``):``        ``self``.result ``=` `False``        ``self``.current ``=` `math.expm1(``float``(txtDisplay.get()))``        ``self``.display(``self``.current)` `    ``def` `lgamma(``self``):``        ``self``.result ``=` `False``        ``self``.current ``=` `math.lgamma(``float``(txtDisplay.get()))``        ``self``.display(``self``.current)` `    ``def` `degrees(``self``):``        ``self``.result ``=` `False``        ``self``.current ``=` `math.degrees(``float``(txtDisplay.get()))``        ``self``.display(``self``.current)` `    ``def` `log2(``self``):``        ``self``.result ``=` `False``        ``self``.current ``=` `math.log2(``float``(txtDisplay.get()))``        ``self``.display(``self``.current)` `    ``def` `log10(``self``):``        ``self``.result ``=` `False``        ``self``.current ``=` `math.log10(``float``(txtDisplay.get()))``        ``self``.display(``self``.current)` `    ``def` `log1p(``self``):``        ``self``.result ``=` `False``        ``self``.current ``=` `math.log1p(``float``(txtDisplay.get()))``        ``self``.display(``self``.current)`  `added_value ``=` `Calc()`

Step 4: The below code will create a display in the GUI of the calculator by passing the font style, font size, background color, foreground color as an argument inside the entry function.

## Python3

 `txtDisplay ``=` `Entry(calc,``                   ``font``=``(``'Helvetica'``, ``20``,``                         ``'bold'``),``                   ``bg``=``'black'``,``                   ``fg``=``'white'``,``                   ``bd``=``30``,``                   ``width``=``28``,``                   ``justify``=``RIGHT)` `txtDisplay.grid(row``=``0``,``                ``column``=``0``,``                ``columnspan``=``4``,``                ``pady``=``1``)` `txtDisplay.insert(``0``, ``"0"``)`

Step 5: Here we will create a number pad for the calculator.

## Python3

 `# store all the numbers in a variable``numberpad ``=` `"789456123"` `# here i will count the rows for placing buttons``# in grid``i ``=` `0` `# create an empty list to store``# each button with its particular specifications``btn ``=` `[]` `# j is in that range to place``# the button in that particular row``for` `j ``in` `range``(``2``, ``5``):` `        ``# k is in this range to place the``    ``# button in that particular column``    ``for` `k ``in` `range``(``3``):``        ``btn.append(Button(calc,``                          ``width``=``6``,``                          ``height``=``2``,``                          ``bg``=``'black'``,``                          ``fg``=``'white'``,``                          ``font``=``(``'Helvetica'``, ``20``, ``'bold'``),``                          ``bd``=``4``, text``=``numberpad[i]))` `        ``# set buttons in row & column and``        ``# separate them with a padding of 1 unit``        ``btn[i].grid(row``=``j, column``=``k, pady``=``1``)` `        ``# put that number as a symbol on that button``        ``btn[i][``"command"``] ``=` `lambda` `x``=``numberpad[i]: added_value.numberEnter(x)``        ``i ``+``=` `1`

Step 6:  Now we will place all the buttons/operators in their respective position in the grid. This is up to you to set them as per your choice by changing their row and column value. In this, each button function is just taking the name of the operator, width, height, background, foreground, font, and respective column & row position of the button as an argument.

## Python3

 `btnClear ``=` `Button(calc, text``=``chr``(``67``),``                  ``width``=``6``, height``=``2``,``                  ``bg``=``'powder blue'``,``                  ``font``=``(``'Helvetica'``, ``20``, ``'bold'``),``                  ``bd``=``4``,``                  ``command``=``added_value.Clear_Entry).grid(``    ``row``=``1``, column``=``0``, pady``=``1``)` `btnAllClear ``=` `Button(calc, text``=``chr``(``67``)``+``chr``(``69``),``                     ``width``=``6``, height``=``2``,``                     ``bg``=``'powder blue'``,``                     ``font``=``(``'Helvetica'``,``                           ``20``, ``'bold'``), bd``=``4``,``                     ``command``=``added_value.All_Clear_Entry).grid(``    ``row``=``1``, column``=``1``, pady``=``1``)` `btnsq ``=` `Button(calc, text``=``"\u221A"``, width``=``6``,``               ``height``=``2``, bg``=``'powder blue'``,``               ``font``=``(``'Helvetica'``, ``20``, ``'bold'``),``               ``bd``=``4``, command``=``added_value.squared).grid(``    ``row``=``1``, column``=``2``, pady``=``1``)` `btnAdd ``=` `Button(calc, text``=``"+"``, width``=``6``,``                ``height``=``2``, bg``=``'powder blue'``,``                ``font``=``(``'Helvetica'``, ``20``, ``'bold'``),``                ``bd``=``4``, command``=``lambda``: added_value.operation(``"add"``)``                ``).grid(row``=``1``, column``=``3``, pady``=``1``)` `btnSub ``=` `Button(calc, text``=``"-"``, width``=``6``,``                ``height``=``2``, bg``=``'powder blue'``,``                ``font``=``(``'Helvetica'``, ``20``, ``'bold'``),``                ``bd``=``4``,``                ``command``=``lambda``: added_value.operation(``"sub"``)``                ``).grid(row``=``2``, column``=``3``, pady``=``1``)` `btnMul ``=` `Button(calc, text``=``"x"``, width``=``6``, height``=``2``,``                ``bg``=``'powder blue'``,``                ``font``=``(``'Helvetica'``, ``20``, ``'bold'``),``                ``bd``=``4``, command``=``lambda``: added_value.operation(``"multi"``)``                ``).grid(row``=``3``, column``=``3``, pady``=``1``)` `btnDiv ``=` `Button(calc, text``=``"/"``, width``=``6``,``                ``height``=``2``, bg``=``'powder blue'``,``                ``font``=``(``'Helvetica'``, ``20``, ``'bold'``),``                ``bd``=``4``, command``=``lambda``: added_value.operation(``"divide"``)``                ``).grid(row``=``4``, column``=``3``, pady``=``1``)` `btnZero ``=` `Button(calc, text``=``"0"``, width``=``6``,``                 ``height``=``2``, bg``=``'black'``, fg``=``'white'``,``                 ``font``=``(``'Helvetica'``, ``20``, ``'bold'``),``                 ``bd``=``4``, command``=``lambda``: added_value.numberEnter(``0``)``                 ``).grid(row``=``5``, column``=``0``, pady``=``1``)` `btnDot ``=` `Button(calc, text``=``"."``, width``=``6``,``                ``height``=``2``, bg``=``'powder blue'``,``                ``font``=``(``'Helvetica'``, ``20``, ``'bold'``),``                ``bd``=``4``, command``=``lambda``: added_value.numberEnter(``"."``)``                ``).grid(row``=``5``, column``=``1``, pady``=``1``)``btnPM ``=` `Button(calc, text``=``chr``(``177``), width``=``6``,``               ``height``=``2``, bg``=``'powder blue'``,``               ``font``=``(``'Helvetica'``, ``20``, ``'bold'``),``               ``bd``=``4``, command``=``added_value.mathPM``               ``).grid(row``=``5``, column``=``2``, pady``=``1``)` `btnEquals ``=` `Button(calc, text``=``"="``, width``=``6``,``                   ``height``=``2``, bg``=``'powder blue'``,``                   ``font``=``(``'Helvetica'``, ``20``, ``'bold'``),``                   ``bd``=``4``, command``=``added_value.sum_of_total``                   ``).grid(row``=``5``, column``=``3``, pady``=``1``)``# ROW 1 :` `btnPi ``=` `Button(calc, text``=``"pi"``, width``=``6``,``               ``height``=``2``, bg``=``'black'``, fg``=``'white'``,``               ``font``=``(``'Helvetica'``, ``20``, ``'bold'``),``               ``bd``=``4``, command``=``added_value.pi``               ``).grid(row``=``1``, column``=``4``, pady``=``1``)` `btnCos ``=` `Button(calc, text``=``"Cos"``, width``=``6``,``                ``height``=``2``, bg``=``'black'``, fg``=``'white'``,``                ``font``=``(``'Helvetica'``, ``20``, ``'bold'``),``                ``bd``=``4``, command``=``added_value.cos``                ``).grid(row``=``1``, column``=``5``, pady``=``1``)` `btntan ``=` `Button(calc, text``=``"tan"``, width``=``6``,``                ``height``=``2``, bg``=``'black'``, fg``=``'white'``,``                ``font``=``(``'Helvetica'``, ``20``, ``'bold'``),``                ``bd``=``4``, command``=``added_value.tan``                ``).grid(row``=``1``, column``=``6``, pady``=``1``)` `btnsin ``=` `Button(calc, text``=``"sin"``, width``=``6``,``                ``height``=``2``, bg``=``'black'``, fg``=``'white'``,``                ``font``=``(``'Helvetica'``, ``20``, ``'bold'``),``                ``bd``=``4``, command``=``added_value.sin``                ``).grid(row``=``1``, column``=``7``, pady``=``1``)` `# ROW 2 :` `btn2Pi ``=` `Button(calc, text``=``"2pi"``, width``=``6``,``                ``height``=``2``, bg``=``'black'``, fg``=``'white'``,``                ``font``=``(``'Helvetica'``, ``20``, ``'bold'``),``                ``bd``=``4``, command``=``added_value.tau``                ``).grid(row``=``2``, column``=``4``, pady``=``1``)` `btnCosh ``=` `Button(calc, text``=``"Cosh"``, width``=``6``,``                 ``height``=``2``, bg``=``'black'``, fg``=``'white'``,``                 ``font``=``(``'Helvetica'``, ``20``, ``'bold'``),``                 ``bd``=``4``, command``=``added_value.cosh``                 ``).grid(row``=``2``, column``=``5``, pady``=``1``)` `btntanh ``=` `Button(calc, text``=``"tanh"``, width``=``6``,``                 ``height``=``2``, bg``=``'black'``, fg``=``'white'``,``                 ``font``=``(``'Helvetica'``, ``20``, ``'bold'``),``                 ``bd``=``4``, command``=``added_value.tanh``                 ``).grid(row``=``2``, column``=``6``, pady``=``1``)` `btnsinh ``=` `Button(calc, text``=``"sinh"``, width``=``6``,``                 ``height``=``2``, bg``=``'black'``, fg``=``'white'``,``                 ``font``=``(``'Helvetica'``, ``20``, ``'bold'``),``                 ``bd``=``4``, command``=``added_value.sinh``                 ``).grid(row``=``2``, column``=``7``, pady``=``1``)` `# ROW 3 :` `btnlog ``=` `Button(calc, text``=``"log"``, width``=``6``,``                ``height``=``2``, bg``=``'black'``, fg``=``'white'``,``                ``font``=``(``'Helvetica'``, ``20``, ``'bold'``),``                ``bd``=``4``, command``=``added_value.log``                ``).grid(row``=``3``, column``=``4``, pady``=``1``)` `btnExp ``=` `Button(calc, text``=``"exp"``, width``=``6``,``                ``height``=``2``, bg``=``'black'``, fg``=``'white'``,``                ``font``=``(``'Helvetica'``, ``20``, ``'bold'``),``                ``bd``=``4``, command``=``added_value.exp``                ``).grid(row``=``3``, column``=``5``, pady``=``1``)` `btnMod ``=` `Button(calc, text``=``"Mod"``, width``=``6``,``                ``height``=``2``, bg``=``'black'``, fg``=``'white'``,``                ``font``=``(``'Helvetica'``, ``20``, ``'bold'``),``                ``bd``=``4``, command``=``lambda``: added_value.operation(``"mod"``)``                ``).grid(row``=``3``, column``=``6``, pady``=``1``)` `btnE ``=` `Button(calc, text``=``"e"``, width``=``6``,``              ``height``=``2``, bg``=``'black'``, fg``=``'white'``,``              ``font``=``(``'Helvetica'``, ``20``, ``'bold'``),``              ``bd``=``4``, command``=``added_value.e``              ``).grid(row``=``3``, column``=``7``, pady``=``1``)` `# ROW 4 :` `btnlog10 ``=` `Button(calc, text``=``"log10"``, width``=``6``,``                  ``height``=``2``, bg``=``'black'``, fg``=``'white'``,``                  ``font``=``(``'Helvetica'``, ``20``, ``'bold'``),``                  ``bd``=``4``, command``=``added_value.log10``                  ``).grid(row``=``4``, column``=``4``, pady``=``1``)` `btncos ``=` `Button(calc, text``=``"log1p"``, width``=``6``,``                ``height``=``2``, bg``=``'black'``, fg``=``'white'``,``                ``font``=``(``'Helvetica'``, ``20``, ``'bold'``),``                ``bd``=``4``, command``=``added_value.log1p``                ``).grid(row``=``4``, column``=``5``, pady``=``1``)` `btnexpm1 ``=` `Button(calc, text``=``"expm1"``, width``=``6``,``                  ``height``=``2``, bg``=``'black'``, fg``=``'white'``,``                  ``font``=``(``'Helvetica'``, ``20``, ``'bold'``),``                  ``bd``=``4``, command``=``added_value.expm1``                  ``).grid(row``=``4``, column``=``6``, pady``=``1``)` `btngamma ``=` `Button(calc, text``=``"gamma"``, width``=``6``,``                  ``height``=``2``, bg``=``'black'``, fg``=``'white'``,``                  ``font``=``(``'Helvetica'``, ``20``, ``'bold'``),``                  ``bd``=``4``, command``=``added_value.lgamma``                  ``).grid(row``=``4``, column``=``7``, pady``=``1``)``# ROW 5 :` `btnlog2 ``=` `Button(calc, text``=``"log2"``, width``=``6``,``                 ``height``=``2``, bg``=``'black'``, fg``=``'white'``,``                 ``font``=``(``'Helvetica'``, ``20``, ``'bold'``),``                 ``bd``=``4``, command``=``added_value.log2``                 ``).grid(row``=``5``, column``=``4``, pady``=``1``)` `btndeg ``=` `Button(calc, text``=``"deg"``, width``=``6``,``                ``height``=``2``, bg``=``'black'``, fg``=``'white'``,``                ``font``=``(``'Helvetica'``, ``20``, ``'bold'``),``                ``bd``=``4``, command``=``added_value.degrees``                ``).grid(row``=``5``, column``=``5``, pady``=``1``)` `btnacosh ``=` `Button(calc, text``=``"acosh"``, width``=``6``,``                  ``height``=``2``, bg``=``'black'``, fg``=``'white'``,``                  ``font``=``(``'Helvetica'``, ``20``, ``'bold'``),``                  ``bd``=``4``, command``=``added_value.acosh``                  ``).grid(row``=``5``, column``=``6``, pady``=``1``)` `btnasinh ``=` `Button(calc, text``=``"asinh"``, width``=``6``,``                  ``height``=``2``, bg``=``'black'``, fg``=``'white'``,``                  ``font``=``(``'Helvetica'``, ``20``, ``'bold'``),``                  ``bd``=``4``, command``=``added_value.asinh``                  ``).grid(row``=``5``, column``=``7``, pady``=``1``)` `lblDisplay ``=` `Label(calc, text``=``"Scientific Calculator"``,``                   ``font``=``(``'Helvetica'``, ``30``, ``'bold'``),``                   ``bg``=``'black'``, fg``=``'white'``, justify``=``CENTER)``lblDisplay.grid(row``=``0``, column``=``4``, columnspan``=``4``)`

Step 7: Now at last we will create a menubar of the calculator GUI.

## Python3

 `# use askyesno function to``# stop/continue the program execution``def` `iExit():``    ``iExit ``=` `tkinter.messagebox.askyesno(``"Scientific Calculator"``,``                                        ``"Do you want to exit ?"``)``    ``if` `iExit>``0``:``        ``root.destroy()``        ``return` `def` `Scientific():``    ``root.resizable(width``=``False``, height``=``False``)``    ``root.geometry(``"944x568+0+0"``)`  `def` `Standard():``    ``root.resizable(width``=``False``, height``=``False``)``    ``root.geometry(``"480x568+0+0"``)` `menubar ``=` `Menu(calc)` `# ManuBar 1 :` `filemenu ``=` `Menu(menubar, tearoff ``=` `0``)``menubar.add_cascade(label ``=` `'File'``, menu ``=` `filemenu)``filemenu.add_command(label ``=` `"Standard"``, command ``=` `Standard)``filemenu.add_command(label ``=` `"Scientific"``, command ``=` `Scientific)``filemenu.add_separator()``filemenu.add_command(label ``=` `"Exit"``, command ``=` `iExit)` `# ManuBar 2 :` `editmenu ``=` `Menu(menubar, tearoff ``=` `0``)``menubar.add_cascade(label ``=` `'Edit'``, menu ``=` `editmenu)``editmenu.add_command(label ``=` `"Cut"``)``editmenu.add_command(label ``=` `"Copy"``)``editmenu.add_separator()``editmenu.add_command(label ``=` `"Paste"``)` `root.config(menu``=``menubar)` `root.mainloop()`

Below is the complete implementation:

## Python3

 `from` `tkinter ``import` `*``import` `math``import` `tkinter.messagebox` `root ``=` `Tk()``root.title(``"Scientific Calculator"``)``root.configure(background ``=` `'white'``)``root.resizable(width``=``False``, height``=``False``)``root.geometry(``"480x568+450+90"``)``calc ``=` `Frame(root)``calc.grid()` `class` `Calc():``    ``def` `__init__(``self``):``        ``self``.total``=``0``        ``self``.current``=``''``        ``self``.input_value``=``True``        ``self``.check_sum``=``False``        ``self``.op``=``''``        ``self``.result``=``False` `    ``def` `numberEnter(``self``, num):``        ``self``.result``=``False``        ``firstnum``=``txtDisplay.get()``        ``secondnum``=``str``(num)``        ``if` `self``.input_value:``            ``self``.current ``=` `secondnum``            ``self``.input_value``=``False``        ``else``:``            ``if` `secondnum ``=``=` `'.'``:``                ``if` `secondnum ``in` `firstnum:``                    ``return``            ``self``.current ``=` `firstnum``+``secondnum``        ``self``.display(``self``.current)` `    ``def` `sum_of_total(``self``):``        ``self``.result``=``True``        ``self``.current``=``float``(``self``.current)``        ``if` `self``.check_sum``=``=``True``:``            ``self``.valid_function()``        ``else``:``            ``self``.total``=``float``(txtDisplay.get())` `    ``def` `display(``self``, value):``        ``txtDisplay.delete(``0``, END)``        ``txtDisplay.insert(``0``, value)` `    ``def` `valid_function(``self``):``        ``if` `self``.op ``=``=` `"add"``:``            ``self``.total ``+``=` `self``.current``        ``if` `self``.op ``=``=` `"sub"``:``            ``self``.total ``-``=` `self``.current``        ``if` `self``.op ``=``=` `"multi"``:``            ``self``.total ``*``=` `self``.current``        ``if` `self``.op ``=``=` `"divide"``:``            ``self``.total ``/``=` `self``.current``        ``if` `self``.op ``=``=` `"mod"``:``            ``self``.total ``%``=` `self``.current``        ``self``.input_value``=``True``        ``self``.check_sum``=``False``        ``self``.display(``self``.total)` `    ``def` `operation(``self``, op):``        ``self``.current ``=` `float``(``self``.current)``        ``if` `self``.check_sum:``            ``self``.valid_function()``        ``elif` `not` `self``.result:``            ``self``.total``=``self``.current``            ``self``.input_value``=``True``        ``self``.check_sum``=``True``        ``self``.op``=``op``        ``self``.result``=``False` `    ``def` `Clear_Entry(``self``):``        ``self``.result ``=` `False``        ``self``.current ``=` `"0"``        ``self``.display(``0``)``        ``self``.input_value``=``True` `    ``def` `All_Clear_Entry(``self``):``        ``self``.Clear_Entry()``        ``self``.total``=``0` `    ``def` `pi(``self``):``        ``self``.result ``=`  `False``        ``self``.current ``=` `math.pi``        ``self``.display(``self``.current)` `    ``def` `tau(``self``):``        ``self``.result ``=`  `False``        ``self``.current ``=` `math.tau``        ``self``.display(``self``.current)` `    ``def` `e(``self``):``        ``self``.result ``=`  `False``        ``self``.current ``=` `math.e``        ``self``.display(``self``.current)` `    ``def` `mathPM(``self``):``        ``self``.result ``=` `False``        ``self``.current ``=` `-``(``float``(txtDisplay.get()))``        ``self``.display(``self``.current)` `    ``def` `squared(``self``):``        ``self``.result ``=` `False``        ``self``.current ``=` `math.sqrt(``float``(txtDisplay.get()))``        ``self``.display(``self``.current)` `    ``def` `cos(``self``):``        ``self``.result ``=` `False``        ``self``.current ``=` `math.cos(math.radians(``float``(txtDisplay.get())))``        ``self``.display(``self``.current)` `    ``def` `cosh(``self``):``        ``self``.result ``=` `False``        ``self``.current ``=` `math.cosh(math.radians(``float``(txtDisplay.get())))``        ``self``.display(``self``.current)` `    ``def` `tan(``self``):``        ``self``.result ``=` `False``        ``self``.current ``=` `math.tan(math.radians(``float``(txtDisplay.get())))``        ``self``.display(``self``.current)` `    ``def` `tanh(``self``):``        ``self``.result ``=` `False``        ``self``.current ``=` `math.tanh(math.radians(``float``(txtDisplay.get())))``        ``self``.display(``self``.current)` `    ``def` `sin(``self``):``        ``self``.result ``=` `False``        ``self``.current ``=` `math.sin(math.radians(``float``(txtDisplay.get())))``        ``self``.display(``self``.current)` `    ``def` `sinh(``self``):``        ``self``.result ``=` `False``        ``self``.current ``=` `math.sinh(math.radians(``float``(txtDisplay.get())))``        ``self``.display(``self``.current)` `    ``def` `log(``self``):``        ``self``.result ``=` `False``        ``self``.current ``=` `math.log(``float``(txtDisplay.get()))``        ``self``.display(``self``.current)` `    ``def` `exp(``self``):``        ``self``.result ``=` `False``        ``self``.current ``=` `math.exp(``float``(txtDisplay.get()))``        ``self``.display(``self``.current)` `    ``def` `acosh(``self``):``        ``self``.result ``=` `False``        ``self``.current ``=` `math.acosh(``float``(txtDisplay.get()))``        ``self``.display(``self``.current)` `    ``def` `asinh(``self``):``        ``self``.result ``=` `False``        ``self``.current ``=` `math.asinh(``float``(txtDisplay.get()))``        ``self``.display(``self``.current)` `    ``def` `expm1(``self``):``        ``self``.result ``=` `False``        ``self``.current ``=` `math.expm1(``float``(txtDisplay.get()))``        ``self``.display(``self``.current)` `    ``def` `lgamma(``self``):``        ``self``.result ``=` `False``        ``self``.current ``=` `math.lgamma(``float``(txtDisplay.get()))``        ``self``.display(``self``.current)` `    ``def` `degrees(``self``):``        ``self``.result ``=` `False``        ``self``.current ``=` `math.degrees(``float``(txtDisplay.get()))``        ``self``.display(``self``.current)` `    ``def` `log2(``self``):``        ``self``.result ``=` `False``        ``self``.current ``=` `math.log2(``float``(txtDisplay.get()))``        ``self``.display(``self``.current)` `    ``def` `log10(``self``):``        ``self``.result ``=` `False``        ``self``.current ``=` `math.log10(``float``(txtDisplay.get()))``        ``self``.display(``self``.current)` `    ``def` `log1p(``self``):``        ``self``.result ``=` `False``        ``self``.current ``=` `math.log1p(``float``(txtDisplay.get()))``        ``self``.display(``self``.current)` `added_value ``=` `Calc()` `txtDisplay ``=` `Entry(calc, font``=``(``'Helvetica'``,``20``,``'bold'``),``                   ``bg``=``'black'``,fg``=``'white'``,``                   ``bd``=``30``,width``=``28``,justify``=``RIGHT)``txtDisplay.grid(row``=``0``,column``=``0``, columnspan``=``4``, pady``=``1``)``txtDisplay.insert(``0``,``"0"``)` `numberpad ``=` `"789456123"``i``=``0``btn ``=` `[]``for` `j ``in` `range``(``2``,``5``):``    ``for` `k ``in` `range``(``3``):``        ``btn.append(Button(calc, width``=``6``, height``=``2``,``                          ``bg``=``'black'``,fg``=``'white'``,``                          ``font``=``(``'Helvetica'``,``20``,``'bold'``),``                          ``bd``=``4``,text``=``numberpad[i]))``        ``btn[i].grid(row``=``j, column``=` `k, pady ``=` `1``)``        ``btn[i][``"command"``]``=``lambda` `x``=``numberpad[i]:added_value.numberEnter(x)``        ``i``+``=``1``      ` `btnClear ``=` `Button(calc, text``=``chr``(``67``),width``=``6``,``                  ``height``=``2``,bg``=``'powder blue'``,``                  ``font``=``(``'Helvetica'``,``20``,``'bold'``)``                  ``,bd``=``4``, command``=``added_value.Clear_Entry``                 ``).grid(row``=``1``, column``=` `0``, pady ``=` `1``)` `btnAllClear ``=` `Button(calc, text``=``chr``(``67``)``+``chr``(``69``),``                     ``width``=``6``, height``=``2``,``                     ``bg``=``'powder blue'``,``                     ``font``=``(``'Helvetica'``,``20``,``'bold'``),``                     ``bd``=``4``,``                     ``command``=``added_value.All_Clear_Entry``                    ``).grid(row``=``1``, column``=` `1``, pady ``=` `1``)` `btnsq ``=` `Button(calc, text``=``"\u221A"``,width``=``6``, height``=``2``,``               ``bg``=``'powder blue'``, font``=``(``'Helvetica'``,``                                       ``20``,``'bold'``),``               ``bd``=``4``,command``=``added_value.squared``              ``).grid(row``=``1``, column``=` `2``, pady ``=` `1``)` `btnAdd ``=` `Button(calc, text``=``"+"``,width``=``6``, height``=``2``,``                ``bg``=``'powder blue'``,``                ``font``=``(``'Helvetica'``,``20``,``'bold'``),``                ``bd``=``4``,command``=``lambda``:added_value.operation(``"add"``)``                ``).grid(row``=``1``, column``=` `3``, pady ``=` `1``)` `btnSub ``=` `Button(calc, text``=``"-"``,width``=``6``,``                ``height``=``2``,bg``=``'powder blue'``,``                ``font``=``(``'Helvetica'``,``20``,``'bold'``),``                ``bd``=``4``,command``=``lambda``:added_value.operation(``"sub"``)``                ``).grid(row``=``2``, column``=` `3``, pady ``=` `1``)` `btnMul ``=` `Button(calc, text``=``"x"``,width``=``6``,``                ``height``=``2``,bg``=``'powder blue'``,``                ``font``=``(``'Helvetica'``,``20``,``'bold'``),``                ``bd``=``4``,command``=``lambda``:added_value.operation(``"multi"``)``                ``).grid(row``=``3``, column``=` `3``, pady ``=` `1``)` `btnDiv ``=` `Button(calc, text``=``"/"``,width``=``6``,``                ``height``=``2``,bg``=``'powder blue'``,``                ``font``=``(``'Helvetica'``,``20``,``'bold'``),``                ``bd``=``4``,command``=``lambda``:added_value.operation(``"divide"``)``                ``).grid(row``=``4``, column``=` `3``, pady ``=` `1``)` `btnZero ``=` `Button(calc, text``=``"0"``,width``=``6``,``                 ``height``=``2``,bg``=``'black'``,fg``=``'white'``,``                 ``font``=``(``'Helvetica'``,``20``,``'bold'``),``                 ``bd``=``4``,command``=``lambda``:added_value.numberEnter(``0``)``                 ``).grid(row``=``5``, column``=` `0``, pady ``=` `1``)` `btnDot ``=` `Button(calc, text``=``"."``,width``=``6``,``                ``height``=``2``,bg``=``'powder blue'``,``                ``font``=``(``'Helvetica'``,``20``,``'bold'``),``                ``bd``=``4``,command``=``lambda``:added_value.numberEnter(``"."``)``                ``).grid(row``=``5``, column``=` `1``, pady ``=` `1``)``btnPM ``=` `Button(calc, text``=``chr``(``177``),width``=``6``,``               ``height``=``2``,bg``=``'powder blue'``, font``=``(``'Helvetica'``,``20``,``'bold'``),``               ``bd``=``4``,command``=``added_value.mathPM``              ``).grid(row``=``5``, column``=` `2``, pady ``=` `1``)` `btnEquals ``=` `Button(calc, text``=``"="``,width``=``6``,``                   ``height``=``2``,bg``=``'powder blue'``,``                   ``font``=``(``'Helvetica'``,``20``,``'bold'``),``                   ``bd``=``4``,command``=``added_value.sum_of_total``                  ``).grid(row``=``5``, column``=` `3``, pady ``=` `1``)``# ROW 1 :``btnPi ``=` `Button(calc, text``=``"pi"``,width``=``6``,``               ``height``=``2``,bg``=``'black'``,fg``=``'white'``,``               ``font``=``(``'Helvetica'``,``20``,``'bold'``),``               ``bd``=``4``,command``=``added_value.pi``              ``).grid(row``=``1``, column``=` `4``, pady ``=` `1``)` `btnCos ``=` `Button(calc, text``=``"Cos"``,width``=``6``,``                ``height``=``2``,bg``=``'black'``,fg``=``'white'``,``                ``font``=``(``'Helvetica'``,``20``,``'bold'``),``                ``bd``=``4``,command``=``added_value.cos``               ``).grid(row``=``1``, column``=` `5``, pady ``=` `1``)` `btntan ``=` `Button(calc, text``=``"tan"``,width``=``6``,``                ``height``=``2``,bg``=``'black'``,fg``=``'white'``,``                ``font``=``(``'Helvetica'``,``20``,``'bold'``),``                ``bd``=``4``,command``=``added_value.tan``               ``).grid(row``=``1``, column``=` `6``, pady ``=` `1``)` `btnsin ``=` `Button(calc, text``=``"sin"``,width``=``6``,``                ``height``=``2``,bg``=``'black'``,fg``=``'white'``,``                ``font``=``(``'Helvetica'``,``20``,``'bold'``),``                ``bd``=``4``,command``=``added_value.sin``               ``).grid(row``=``1``, column``=` `7``, pady ``=` `1``)` `# ROW 2 :``btn2Pi ``=` `Button(calc, text``=``"2pi"``,width``=``6``,``                ``height``=``2``,bg``=``'black'``,fg``=``'white'``,``                ``font``=``(``'Helvetica'``,``20``,``'bold'``),``                ``bd``=``4``,command``=``added_value.tau``               ``).grid(row``=``2``, column``=` `4``, pady ``=` `1``)` `btnCosh ``=` `Button(calc, text``=``"Cosh"``,width``=``6``,``                 ``height``=``2``,bg``=``'black'``,fg``=``'white'``,``                 ``font``=``(``'Helvetica'``,``20``,``'bold'``),``                 ``bd``=``4``,command``=``added_value.cosh``                ``).grid(row``=``2``, column``=` `5``, pady ``=` `1``)` `btntanh ``=` `Button(calc, text``=``"tanh"``,width``=``6``,``                 ``height``=``2``,bg``=``'black'``,fg``=``'white'``,``                 ``font``=``(``'Helvetica'``,``20``,``'bold'``),``                 ``bd``=``4``,command``=``added_value.tanh``                ``).grid(row``=``2``, column``=` `6``, pady ``=` `1``)` `btnsinh ``=` `Button(calc, text``=``"sinh"``,width``=``6``,``                 ``height``=``2``,bg``=``'black'``,fg``=``'white'``,``                 ``font``=``(``'Helvetica'``,``20``,``'bold'``),``                 ``bd``=``4``,command``=``added_value.sinh``                ``).grid(row``=``2``, column``=` `7``, pady ``=` `1``)` `# ROW 3 :``btnlog ``=` `Button(calc, text``=``"log"``,width``=``6``,``                ``height``=``2``,bg``=``'black'``,fg``=``'white'``,``                ``font``=``(``'Helvetica'``,``20``,``'bold'``),``                ``bd``=``4``,command``=``added_value.log``               ``).grid(row``=``3``, column``=` `4``, pady ``=` `1``)` `btnExp ``=` `Button(calc, text``=``"exp"``,width``=``6``, height``=``2``,``                ``bg``=``'black'``,fg``=``'white'``,``                ``font``=``(``'Helvetica'``,``20``,``'bold'``),``                ``bd``=``4``,command``=``added_value.exp``               ``).grid(row``=``3``, column``=` `5``, pady ``=` `1``)` `btnMod ``=` `Button(calc, text``=``"Mod"``,width``=``6``,``                ``height``=``2``,bg``=``'black'``,fg``=``'white'``,``                ``font``=``(``'Helvetica'``,``20``,``'bold'``),``                ``bd``=``4``,command``=``lambda``:added_value.operation(``"mod"``)``                ``).grid(row``=``3``, column``=` `6``, pady ``=` `1``)` `btnE   ``=` `Button(calc, text``=``"e"``,width``=``6``,``                ``height``=``2``,bg``=``'black'``,fg``=``'white'``,``                ``font``=``(``'Helvetica'``,``20``,``'bold'``),``                ``bd``=``4``,command``=``added_value.e``               ``).grid(row``=``3``, column``=` `7``, pady ``=` `1``)` `# ROW 4 :``btnlog10 ``=` `Button(calc, text``=``"log10"``,width``=``6``,``                  ``height``=``2``,bg``=``'black'``,fg``=``'white'``,``                  ``font``=``(``'Helvetica'``,``20``,``'bold'``),``                  ``bd``=``4``,command``=``added_value.log10``                 ``).grid(row``=``4``, column``=` `4``, pady ``=` `1``)` `btncos   ``=` `Button(calc, text``=``"log1p"``,width``=``6``,``                  ``height``=``2``,bg``=``'black'``,fg``=``'white'``,``                  ``font``=``(``'Helvetica'``,``20``,``'bold'``),``                  ``bd``=``4``,command``=``added_value.log1p``                 ``).grid(row``=``4``, column``=` `5``, pady ``=` `1``)` `btnexpm1 ``=` `Button(calc, text``=``"expm1"``,width``=``6``,``                  ``height``=``2``,bg``=``'black'``,fg``=``'white'``,``                  ``font``=``(``'Helvetica'``,``20``,``'bold'``),``                  ``bd ``=` `4``,command``=``added_value.expm1``                 ``).grid(row``=``4``, column``=` `6``, pady ``=` `1``)` `btngamma ``=` `Button(calc, text``=``"gamma"``,width``=``6``,``                  ``height``=``2``,bg``=``'black'``,fg``=``'white'``,``                  ``font``=``(``'Helvetica'``,``20``,``'bold'``),``                  ``bd``=``4``,command``=``added_value.lgamma``                 ``).grid(row``=``4``, column``=` `7``, pady ``=` `1``)``# ROW 5 :``btnlog2 ``=` `Button(calc, text``=``"log2"``,width``=``6``,``                 ``height``=``2``,bg``=``'black'``,fg``=``'white'``,``                 ``font``=``(``'Helvetica'``,``20``,``'bold'``),``                 ``bd``=``4``,command``=``added_value.log2``                ``).grid(row``=``5``, column``=` `4``, pady ``=` `1``)` `btndeg ``=` `Button(calc, text``=``"deg"``,width``=``6``,``                ``height``=``2``,bg``=``'black'``,fg``=``'white'``,``                ``font``=``(``'Helvetica'``,``20``,``'bold'``),``                ``bd``=``4``,command``=``added_value.degrees``               ``).grid(row``=``5``, column``=` `5``, pady ``=` `1``)` `btnacosh ``=` `Button(calc, text``=``"acosh"``,width``=``6``,``                  ``height``=``2``,bg``=``'black'``,fg``=``'white'``,``                  ``font``=``(``'Helvetica'``,``20``,``'bold'``),``                  ``bd``=``4``,command``=``added_value.acosh``                 ``).grid(row``=``5``, column``=` `6``, pady ``=` `1``)` `btnasinh ``=` `Button(calc, text``=``"asinh"``,width``=``6``,``                  ``height``=``2``,bg``=``'black'``,fg``=``'white'``,``                  ``font``=``(``'Helvetica'``,``20``,``'bold'``),``                  ``bd``=``4``,command``=``added_value.asinh``                 ``).grid(row``=``5``, column``=` `7``, pady ``=` `1``)` `lblDisplay ``=` `Label(calc, text ``=` `"Scientific Calculator"``,``                   ``font``=``(``'Helvetica'``,``30``,``'bold'``),``                   ``bg``=``'black'``,fg``=``'white'``,justify``=``CENTER)` `lblDisplay.grid(row``=``0``, column``=` `4``,columnspan``=``4``)` `def` `iExit():``    ``iExit ``=` `tkinter.messagebox.askyesno(``"Scientific Calculator"``,``                                        ``"Do you want to exit ?"``)``    ``if` `iExit>``0``:``        ``root.destroy()``        ``return` `def` `Scientific():``    ``root.resizable(width``=``False``, height``=``False``)``    ``root.geometry(``"944x568+0+0"``)`  `def` `Standard():``    ``root.resizable(width``=``False``, height``=``False``)``    ``root.geometry(``"480x568+0+0"``)` `menubar ``=` `Menu(calc)` `# ManuBar 1 :``filemenu ``=` `Menu(menubar, tearoff ``=` `0``)``menubar.add_cascade(label ``=` `'File'``, menu ``=` `filemenu)``filemenu.add_command(label ``=` `"Standard"``, command ``=` `Standard)``filemenu.add_command(label ``=` `"Scientific"``, command ``=` `Scientific)``filemenu.add_separator()``filemenu.add_command(label ``=` `"Exit"``, command ``=` `iExit)` `# ManuBar 2 :``editmenu ``=` `Menu(menubar, tearoff ``=` `0``)``menubar.add_cascade(label ``=` `'Edit'``, menu ``=` `editmenu)``editmenu.add_command(label ``=` `"Cut"``)``editmenu.add_command(label ``=` `"Copy"``)``editmenu.add_separator()``editmenu.add_command(label ``=` `"Paste"``)` `root.config(menu``=``menubar)` `root.mainloop()`

Output:

My Personal Notes arrow_drop_up