-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCalculator_App.py
More file actions
112 lines (84 loc) · 3.93 KB
/
Copy pathCalculator_App.py
File metadata and controls
112 lines (84 loc) · 3.93 KB
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
107
108
109
110
111
112
from tkinter import Tk,END,Entry,N,E,S,W,Button
from tkinter import font
from tkinter import Label
from functools import partial
def get_input(entry,argu):
entry.insert(END,argu)
def backspace(entry):
input_len = len(entry.get())
entry.delete(input_len - 1)
def clear(entry):
entry.delete(0,END)
def calc(entry):
input_info = entry.get()
try:
output = str(eval(input_info.strip()))
except ZeroDvivisionError:
popupmsg()
output = ""
clear(entry)
entry.insert(END,output)
def popupmsg():
popup = Tk()
popup.resizable(0,0)
popup.geometry("120x100")
popup.title("Alert")
label = Label(popup,text="Cannot divide by 0! \n Enter valid values")
label.pack(side="top",fill="x",pady=10)
B1 = Button(popup,text="Okay",bg="#DDDDDD",command=popup.destory)
B1.pack()
def cal():
root = Tk()
root.title("Calc")
root.resizable(0,0)
entry_font = font.Font(size=15)
entry=Entry(root,justify="right",font=entry_font)
entry.grid(row=0,column=0,columnspan=4,sticky=N + W + S + E, padx=5,pady=5)
cal_button_bg = '#FF6600'
num_button_bg = '#4B4B4B'
other_button_bg = '#DDDDDD'
text_fg = '#FFFFFF'
button_active_bg = '#C0C0C0'
num_button = partial(Button,root,fg=text_fg,bg=num_button_bg,padx=10,pady=3,activebackground=button_active_bg)
cal_button = partial(Button,root,fg=text_fg,bg=cal_button_bg,padx=10,pady=3,activebackground=button_active_bg)
button7 = num_button(text='7',bg=num_button_bg,command=lambda:get_input(entry,'7'))
button7.grid(row=2,column=0,pady=5)
button8 = num_button(text='8',command=lambda:get_input(entry,'8'))
button8.grid(row=2,column=1,pady=5)
button9 = num_button(text='9',command=lambda:get_input(entry,'9'))
button9.grid(row=2,column=2,pady=5)
button10 = cal_button(text='+',command=lambda:get_input(entry,'+'))
button10.grid(row=4,column=3,pady=5)
button4 = num_button(text='4',command=lambda:get_input(entry,'4'))
button4.grid(row=3,column=0,pady=5)
button5 = num_button(text='5',command=lambda:get_input(entry,'5'))
button5,grid(row=3,column=1,pady=5)
button6 = num_button(text='6',command=lambda:get_input(entry,'6'))
button6.grid(row=3,column=2,pady=5)
button11 = cal_button(text='-',command=lambda:get_input(entry,'-'))
button11.grid(row=3,column=3,pady=5)
button1 = num_button(text='1',command = lambd:get_input(entry,'1'))
button1.grid(row=4,column=0,pady=5)
button2 = num_button(text='2', command=lambda:get_input(entry,'2'))
button2.grid(row=4,column=1,pady=5)
button3 = num_button(text='3',command=lambda:get_input(entry,'3'))
button3.grid(row=4,column=2,pady=5)
button12 = cal_button(text='*',command=lambda:get_input(entry,'*'))
button12.grid(row=2,column=3,pady=5)
button0 = num_button(text='0',command=lambda:get_input(entry,'0'))
button0.grid(row=5,column=0,pady=5)
button13 = num_button(text='.',command=lambda:get_input(entry,'.'))
button13.grid(row=5,column=1,pady=5)
button14=Button(root,text='/',fg=text_fg,bg=cal_button_bg,padx=10,pady=3,command=lambda:get_input(entry,'/'))
button14.grid(row=1,column=3,pady=5)
button15 = Button(root,text='<-',bg=other_button_bg,padx=10,pady=3,command=lambda:backspace(entry),activebackground=button_active_bg)
button15.grid(row=1,column=0,columnspan=2,padx=3,pady=5,sticky=N+S+E+W)
button16 = Button(root,text='C',bg=other_button_bg,padx=10,pady=3,command=lambda:clear(entry),activebackground=button_active_bg)
button16.grid(row=1,column=2,pady=5)
button17 = Button(root,text='=',fg=text_fg,bg=cal_button_bg,padx=10,pady=3,command=lambda:calc(entry),activebackground=button_active_bg)
button17.grid(row=5,column=3,pady=5)
button18 = Button(root,text='^',fg=text_fg,bg=cal_button_bg,padx=10,pady=3,command=lambda:get_input(entry,'**'))
button18.grid(row=5,column=2,pady=5)
root.mainloop()
if __name__ == '__main__':
cal()