-
Notifications
You must be signed in to change notification settings - Fork 0
/
main.py
86 lines (71 loc) · 2.93 KB
/
main.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
from tkinter import*
import _ast
root = Tk()
root.title("Calculator")
#get the user to input
i = 0
def get_variables(num):
global i
display.insert(i,num)
i+=1
def calculator():
entire_string = display.get()
try:
result = eval(entire_string)
clear_all()
display.insert(0,result)
except Exception:
clear_all()
display.insert(0,"Error")
def get_operator(operator):
global i
length = len(operator)
display.insert(i,operator)
i+=length
def factorial(num):
if num == 1:
return 1
else:
return num*factorial(num - 1)
def clear_all():
display.delete(0,END)
def undo():
entire_string = display.get()
if len(entire_string):
new_string = entire_string[:-1]
clear_all()
display.insert(0,new_string)
else:
clear_all()
display.insert(0,"Error")
#adding the input field
display = Entry(root)
display.grid(row=1,columnspan=6,sticky=W+E)
#adding buttons to the calculator
Button(root, text="1", command = lambda: get_variables(1)).grid(row=2,column=0)
Button(root, text="2", command = lambda: get_variables(2)).grid(row=2,column=1)
Button(root, text="3", command = lambda: get_variables(3)).grid(row=2,column=2)
Button(root, text="4", command = lambda: get_variables(4)).grid(row=3,column=0)
Button(root, text="5", command = lambda: get_variables(5)).grid(row=3,column=1)
Button(root, text="6", command = lambda: get_variables(6)).grid(row=3,column=2)
Button(root, text="7", command = lambda: get_variables(7)).grid(row=4,column=0)
Button(root, text="8", command = lambda: get_variables(8)).grid(row=4,column=1)
Button(root, text="9", command = lambda: get_variables(9)).grid(row=4,column=2)
#adding other buttons to the calculator
Button(root,text="AC",command = lambda: clear_all()).grid(row=5,column=0)
Button(root,text="0", command = lambda: get_variables(0)).grid(row=5,column=1)
Button(root,text="=",command = lambda: calculator()).grid(row=5,column=2)
Button(root,text="+",command= lambda: get_operator("+")).grid(row=2,column=3)
Button(root,text="-",command= lambda: get_operator("-")).grid(row=3,column=3)
Button(root,text="*",command= lambda: get_operator("*")).grid(row=4,column=3)
Button(root,text="/",command= lambda: get_operator("/")).grid(row=5,column=3)
#adding new operations
Button(root,text="pi",command= lambda: get_operator("3.1415926")).grid(row=2,column=4)
Button(root,text="%",command= lambda: get_operator("%")).grid(row=3,column=4)
Button(root,text="(",command= lambda: get_operator("(")).grid(row=4,column=4)
Button(root,text="exp",command= lambda: get_operator("**")).grid(row=5,column=4)
Button(root,text="<-",command= lambda: undo()).grid(row=2,column=5)
Button(root,text="x!",command= lambda: get_operator("!")).grid(row=3,column=5)
Button(root,text=")",command= lambda: get_operator(")")).grid(row=4,column=5)
Button(root,text="^2",command= lambda: get_operator("**2")).grid(row=5,column=5)
root.mainloop()