-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathasistant_small_calculator.py
106 lines (80 loc) · 7.08 KB
/
asistant_small_calculator.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
from kivy.app import App
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.core.window import Window
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.gridlayout import GridLayout
from kivy.uix.button import Button
from kivy.uix.textinput import TextInput
import json
with open('JSON//settings.json', 'r') as file:
settings = json.load(file)
Window.clearcolor = settings["app_theme"]
saveInput = ""
class CalculatorScreen(Screen):
def calculate(self, symbol): # add a colon here
global saveInput
if symbol.text == "<=": # use == instead of is
saveInput = self.result.text = ""
elif symbol.text != "=": # use != instead of is not
self.result.text += symbol.text
saveInput += symbol.text
else:
try:
saveInput = self.result.text = str(eval(saveInput))
except ZeroDivisionError: # handle zero division error
self.result.text = "Cannot divide by zero"
saveInput = ""
except SyntaxError: # handle syntax error
self.result.text = "Invalid expression"
saveInput = ""
except Exception as e: # handle any other error
self.result.text = "Error"
saveInput = ""
print(e)
def __init__(self, **kwargs):
super().__init__(**kwargs)
main_col = BoxLayout(orientation="vertical", spacing=2)
tools_row = BoxLayout(size_hint=(1, 0.25), spacing=2)
self.info_label = TextInput(text="", readonly=True, font_size=25, size_hint = [1, 0.75], background_color=settings["textinput"]["bg_color"], foreground_color=settings["textinput"]["text_color"])
tools_row_btns_col = GridLayout(cols=1, size_hint=(0.25, 1), spacing=2)
self.setings_btn = Button(text="*", font_size=100, background_normal="blue", background_color=settings["buttons"]["bg_color"], color=settings["buttons"]["text_color"])
self.profile_btn = Button(text="Me", font_size=50, background_normal="blue", background_color=settings["buttons"]["bg_color"], color=settings["buttons"]["text_color"])
tools_row.add_widget(self.info_label)
tools_row_btns_col.add_widget(self.setings_btn)
tools_row_btns_col.add_widget(self.profile_btn)
tools_row.add_widget(tools_row_btns_col)
main_col.add_widget(tools_row)
root = BoxLayout(orientation="vertical", padding=5, spacing=2)
self.result = TextInput(text="", readonly=True, font_size=50, size_hint = [1, 0.75], background_color=settings["textinput"]["bg_color"], foreground_color=settings["textinput"]["text_color"])
root.add_widget(self.result)
btn_grid = GridLayout(rows=5, spacing=2)
btn_grid.add_widget(Button(text="<=", on_press=self.calculate, font_size=50, background_normal="blue", background_color=settings["buttons"]["bg_color"], color=settings["buttons"]["text_color"]))
btn_grid.add_widget(Button(text="%", on_press=self.calculate, font_size=50, background_normal="blue", background_color=settings["buttons"]["bg_color"], color=settings["buttons"]["text_color"]))
btn_grid.add_widget(Button(text="(", on_press=self.calculate, font_size=50, background_normal="blue", background_color=settings["buttons"]["bg_color"], color=settings["buttons"]["text_color"]))
btn_grid.add_widget(Button(text=")", on_press=self.calculate, font_size=50, background_normal="blue", background_color=settings["buttons"]["bg_color"], color=settings["buttons"]["text_color"]))
btn_grid.add_widget(Button(text="7", on_press=self.calculate, font_size=50, background_normal="blue", background_color=settings["buttons"]["bg_color"], color=settings["buttons"]["text_color"]))
btn_grid.add_widget(Button(text="8", on_press=self.calculate, font_size=50, background_normal="blue", background_color=settings["buttons"]["bg_color"], color=settings["buttons"]["text_color"]))
btn_grid.add_widget(Button(text="9", on_press=self.calculate, font_size=50, background_normal="blue", background_color=settings["buttons"]["bg_color"], color=settings["buttons"]["text_color"]))
btn_grid.add_widget(Button(text="*", on_press=self.calculate, font_size=50, background_normal="blue", background_color=settings["buttons"]["bg_color"], color=settings["buttons"]["text_color"]))
btn_grid.add_widget(Button(text="4", on_press=self.calculate, font_size=50, background_normal="blue", background_color=settings["buttons"]["bg_color"], color=settings["buttons"]["text_color"]))
btn_grid.add_widget(Button(text="5", on_press=self.calculate, font_size=50, background_normal="blue", background_color=settings["buttons"]["bg_color"], color=settings["buttons"]["text_color"]))
btn_grid.add_widget(Button(text="6", on_press=self.calculate, font_size=50, background_normal="blue", background_color=settings["buttons"]["bg_color"], color=settings["buttons"]["text_color"]))
btn_grid.add_widget(Button(text="+", on_press=self.calculate, font_size=50, background_normal="blue", background_color=settings["buttons"]["bg_color"], color=settings["buttons"]["text_color"]))
btn_grid.add_widget(Button(text="1", on_press=self.calculate, font_size=50, background_normal="blue", background_color=settings["buttons"]["bg_color"], color=settings["buttons"]["text_color"]))
btn_grid.add_widget(Button(text="2", on_press=self.calculate, font_size=50, background_normal="blue", background_color=settings["buttons"]["bg_color"], color=settings["buttons"]["text_color"]))
btn_grid.add_widget(Button(text="3", on_press=self.calculate, font_size=50, background_normal="blue", background_color=settings["buttons"]["bg_color"], color=settings["buttons"]["text_color"]))
btn_grid.add_widget(Button(text="/", on_press=self.calculate, font_size=50, background_normal="blue", background_color=settings["buttons"]["bg_color"], color=settings["buttons"]["text_color"]))
btn_grid.add_widget(Button(text=".", on_press=self.calculate, font_size=50, background_normal="blue", background_color=settings["buttons"]["bg_color"], color=settings["buttons"]["text_color"]))
btn_grid.add_widget(Button(text="0", on_press=self.calculate, font_size=50, background_normal="blue", background_color=settings["buttons"]["bg_color"], color=settings["buttons"]["text_color"]))
btn_grid.add_widget(Button(text="=", on_press=self.calculate, font_size=50, background_normal="blue", background_color=settings["buttons"]["bg_color"], color=settings["buttons"]["text_color"]))
btn_grid.add_widget(Button(text="-", on_press=self.calculate, font_size=50, background_normal="blue", background_color=settings["buttons"]["bg_color"], color=settings["buttons"]["text_color"]))
root.add_widget(btn_grid)
main_col.add_widget(root)
self.add_widget(main_col)
class ProjectCalculator(App):
def build(self):
sm = ScreenManager()
sm.add_widget(CalculatorScreen(name='calculator'))
return sm
if __name__ == "__main__":
ProjectCalculator().run()