In this video we’ll build out the addition functionality of our calculator with Kivy and Python.
In the last video, we built out the basic gui for our calculator app. In this video we’ll add in some functionality.
First, we’ll write code to deal with pressing number buttons and entering them into the text box at the top of our calculator.
Then we’ll work on the math buttons (plus, minus, multiplication, and division).
After that we’ll start to work on the equal button, but only for addition.
Python Code: calc.py
GitHub Code: calc.py
from kivy.app import App
from kivy.uix.widget import Widget
from kivy.properties import ObjectProperty
from kivy.lang import Builder
from kivy.core.window import Window
# Set the app size
Window.size = (500,700)
# Designate Our .kv design file
Builder.load_file('calc.kv')
class MyLayout(Widget):
def clear(self):
self.ids.calc_input.text = '0'
# Create a button pressing function
def button_press(self, button):
# create a variable that contains whatever was in the text box already
prior = self.ids.calc_input.text
# determine if 0 is sitting there
if prior == "0":
self.ids.calc_input.text = ''
self.ids.calc_input.text = f'{button}'
else:
self.ids.calc_input.text = f'{prior}{button}'
# create addition function
def add(self):
# create a variable that contains whatever was in the text box already
prior = self.ids.calc_input.text
# slap a plus sign to the text box
self.ids.calc_input.text = f'{prior}+'
# create addition function
def subtract(self):
# create a variable that contains whatever was in the text box already
prior = self.ids.calc_input.text
# slap a plus sign to the text box
self.ids.calc_input.text = f'{prior}-'
# create addition function
def multiply(self):
# create a variable that contains whatever was in the text box already
prior = self.ids.calc_input.text
# slap a plus sign to the text box
self.ids.calc_input.text = f'{prior}*'
# create addition function
def divide(self):
# create a variable that contains whatever was in the text box already
prior = self.ids.calc_input.text
# slap a plus sign to the text box
self.ids.calc_input.text = f'{prior}/'
# create equals to function
def equals(self):
prior = self.ids.calc_input.text
# Addition
if "+" in prior:
num_list = prior.split("+")
answer = 0
# loop thru our list
for number in num_list:
answer = answer + int(number)
# print the answer in the text box
self.ids.calc_input.text = str(answer)
class CalculatorApp(App):
def build(self):
return MyLayout()
if __name__ == '__main__':
CalculatorApp().run()
Kivy Design Code: calc.kv
GitHub Code: calc.kv
<MyLayout> BoxLayout: orientation: "vertical" size: root.width, root.height TextInput: id: calc_input text: "0" halign: "right" font_size: 65 size_hint: (1, .15) GridLayout: cols: 4 rows: 5 # Row Button: size_hint: (.2, .2) font_size: 32 text: "%" Button: size_hint: (.2, .2) font_size: 32 text: "CE" Button: id: clear size_hint: (.2, .2) font_size: 32 text: "C" on_press: root.clear() Button: size_hint: (.2, .2) font_size: 32 text: "/" on_press: root.divide() # Row Button: size_hint: (.2, .2) font_size: 32 text: "7" background_color: (157/255, 157/255, 157/255, 1) on_press: root.button_press(7) Button: size_hint: (.2, .2) font_size: 32 text: "8" background_color: (157/255, 157/255, 157/255, 1) on_press: root.button_press(8) Button: size_hint: (.2, .2) font_size: 32 text: "9" background_color: (157/255, 157/255, 157/255, 1) on_press: root.button_press(9) Button: size_hint: (.2, .2) font_size: 32 text: "x" on_press: root.multiply() # Row Button: size_hint: (.2, .2) font_size: 32 text: "4" background_color: (157/255, 157/255, 157/255, 1) on_press: root.button_press(4) Button: size_hint: (.2, .2) font_size: 32 text: "5" background_color: (157/255, 157/255, 157/255, 1) on_press: root.button_press(5) Button: size_hint: (.2, .2) font_size: 32 text: "6" background_color: (157/255, 157/255, 157/255, 1) on_press: root.button_press(6) Button: size_hint: (.2, .2) font_size: 32 text: "-" on_press: root.subtract() # Row Button: size_hint: (.2, .2) font_size: 32 text: "1" background_color: (157/255, 157/255, 157/255, 1) on_press: root.button_press(1) Button: size_hint: (.2, .2) font_size: 32 text: "2" background_color: (157/255, 157/255, 157/255, 1) on_press: root.button_press(2) Button: size_hint: (.2, .2) font_size: 32 text: "3" background_color: (157/255, 157/255, 157/255, 1) on_press: root.button_press(3) Button: size_hint: (.2, .2) font_size: 32 text: "+" on_press: root.add() # Row Button: size_hint: (.2, .2) font_size: 32 text: "+/-" background_color: (157/255, 157/255, 157/255, 1) Button: size_hint: (.2, .2) font_size: 32 text: "0" background_color: (157/255, 157/255, 157/255, 1) on_press: root.button_press(0) Button: size_hint: (.2, .2) font_size: 32 text: "." background_color: (157/255, 157/255, 157/255, 1) Button: size_hint: (.2, .2) font_size: 32 text: "=" on_press: root.equals()

Add comment