How to make calculator using kivy | Python

19 Oct, 2021
Kivy is a platform-independent GUI tool in Python. As it can be run on Android, IOS, linux and Windows etc. It is basically used to develop the Android application, but it does not mean that it can not be used on Desktops applications. 
???????? Kivy Tutorial – Learn Kivy with Examples.
In this article, we will learn how to make a simple calculator using Kivy. 
Prerequisites:1) Basic knowledge of Mathematics 2) Python 3) Kivy 4) Widgets and code understanding of kivy
 
Basic approach to make A calculator:

1) import kivy
2) import kivyApp
3) import Gridlayout
4) import config(to configure/adjust the window size)
5) Set minimum version(optional)
6) Create Layout class :
      define Calculator function in it
         : In this i am using try-catch because if any arithmetic 
            exception occur it will through the error  

7) create App class
8) create .kv file (name same as the app class):
        1) create buttons
        2) Add the style to the buttons
        3) Add functionalities of the button 
9) return Layout/widget/Class(according to requirement)
10) Run an instance of the class
Implementation of the Approach: main.py 
Python3
# Program to create a calculator   # Program to Show how to create a switch# import kivy module   import kivy       # base Class of your App inherits from the App class.   # app:always refers to the instance of your application  from kivy.app import App    # this restrict the kivy version i.e # below this kivy version you cannot # use the app or software kivy.require('1.9.0') # for making multiple bttons to arranging# them we are using thisfrom kivy.uix.gridlayout import GridLayout # for the size of windowfrom kivy.config import Config # Setting size to resizableConfig.set('graphics', 'resizable', 1)## Config.set('graphics', 'width', '400')## Config.set('graphics', 'height', '400')  # Creating Layout classclass CalcGridLayout(GridLayout):      # Function called when equals is pressed    def calculate(self, calculation):        if calculation:            try:                # Solve formula and display it in entry                # which is pointed at by display                self.display.text = str(eval(calculation))            except Exception:                self.display.text = "Error"   # Creating App classclass CalculatorApp(App):      def build(self):        return CalcGridLayout()  # creating object and running itcalcApp = CalculatorApp()calcApp.run()
  calculator.kv 
Python3
# Custom button<CustButton@Button>:    font_size: 32  # Define id so I can refer to the CalcGridLayout# class functions# Display points to the entry widget<CalcGridLayout>:    id: calculator    display: entry    rows: 6    padding: 10    spacing: 10            # Where input is displayed    BoxLayout:        TextInput:            id: entry            font_size: 32            multiline: False      # When buttons are pressed update the entry    BoxLayout:        spacing: 10        CustButton:            text: "7"            on_press: entry.text += self.text        CustButton:            text: "8"            on_press: entry.text += self.text        CustButton:            text: "9"            on_press: entry.text += self.text        CustButton:            text: "+"            on_press: entry.text += self.text      BoxLayout:        spacing: 10        CustButton:            text: "4"            on_press: entry.text += self.text        CustButton:            text: "5"            on_press: entry.text += self.text        CustButton:            text: "6"            on_press: entry.text += self.text        CustButton:            text: "-"            on_press: entry.text += self.text      BoxLayout:        spacing: 10        CustButton:            text: "1"            on_press: entry.text += self.text        CustButton:            text: "2"            on_press: entry.text += self.text        CustButton:            text: "3"            on_press: entry.text += self.text        CustButton:            text: "*"            on_press: entry.text += self.text      # When equals is pressed pass text in the entry    # to the calculate function    BoxLayout:        spacing: 10        CustButton:            text: "AC"            on_press: entry.text = ""        CustButton:            text: "0"            on_press: entry.text += self.text        CustButton:            text: "="            on_press: calculator.calculate(entry.text)        CustButton:            text: "/"            on_press: entry.text += self.text    BoxLayout:        CustButton:            font_size: 20            text: "Scientific calculator"            on_press: entry.text = ""       
Output:  
 
saurabh1990aror
gabaa406
Python-gui
Python-kivy
Python
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Python Dictionary
Different ways to create Pandas Dataframe
Enumerate() in Python
Python String | replace()
How to Install PIP on Windows ?
*args and **kwargs in Python
Python Classes and Objects
Convert integer to string in Python
Python | os.path.join() method
Create a Pandas DataFrame from Lists