-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCalculator.py
More file actions
126 lines (104 loc) · 3.77 KB
/
Calculator.py
File metadata and controls
126 lines (104 loc) · 3.77 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
113
114
115
116
117
118
119
120
121
122
123
124
125
126
from tkinter import *
class Calculator(Tk):
"""Making of a calculator using tkinter"""
def screen(self):
"""Display for displaying calculation"""
global screen_vr
screen_vr = StringVar()
screen_vr.set("")
# Entry for the display
self.sc = Entry(self, textvariable=screen_vr, font="timesnewroman 20 bold",
borderwidth=5, relief=SUNKEN)
self.sc.pack(
side=TOP, ipadx="200", ipady="30", anchor="n", pady="5")
def numKeys(self):
"""All the buttons for the calculator"""
# Frame for all rows
# First row---
self.frme1 = Frame(self)
self.frme1.pack()
self.numbers = ["1", "2", "3"]
for number in self.numbers:
b1 = Button(self.frme1, text=number, bg="gold", padx=50, pady=50)
b1.pack(padx=0,
side=LEFT, anchor="w")
b1.bind("<Button-1>",self.click)
# second row
self.numbers2 = ["4", "5", "6"]
self.frme2 = Frame(self)
self.frme2.pack()
for number2 in self.numbers2:
b2 = Button(self.frme2, text=number2, bg="gold", padx=50, pady=50)
b2.pack(
side=LEFT)
b2.bind("<Button-1>",self.click)
# 3rd row
self.numbers3 = ["7", "8", "9"]
self.frme3 = Frame(self)
self.frme3.pack()
for number3 in self.numbers3:
b3 = Button(self.frme3, text=number3, bg="gold", padx=50, pady=50)
b3.pack(
side=LEFT)
b3.bind("<Button-1>",self.click)
def operators(self):
"""Keys such as + - = /"""
b1 = Button(self.frme1, text="+", bg="silver", padx="50", pady="50")
b1.pack(side=RIGHT)
b1.bind("<Button-1>",self.click)
b2 = Button(self.frme2, text="-", bg="silver", padx="50", pady="50")
b2.pack(side=RIGHT)
b2.bind("<Button-1>", self.click)
b3 = Button(self.frme3, text="*", bg="silver", padx="50", pady="50")
b3.pack(side=RIGHT)
b3.bind("<Button-1>", self.click)
fr4 = Frame(self)
fr4.pack()
b4 = Button(fr4, text="AC",
padx="46", pady="47")
b4.pack(side=LEFT)
b4.bind("<Button-1>",self.click)
b5 = Button(fr4, text="0",bg="gold",
padx="50", pady="50")
b5.pack(side=LEFT)
b5.bind("<Button-1>", self.click)
b6 = Button(fr4, text="=", bg="blue", padx='50', pady="50")
b6.pack(side=LEFT)
b6.bind("<Button-1>", self.click)
b7 = Button(fr4, text="/", bg="silver",
padx="50", pady="50")
b7.pack(side=LEFT)
b7.bind("<Button-1>", self.click)
def click(self, event):
try:
txt = event.widget.cget("text")
# print(txt)
global screen_vr
if txt == "=":
try:
if screen_vr.get().isdigit():
value = int(screen_vr.get())
else:
value = eval(screen_vr.get())
except Exception as e:
value = "Error"
screen_vr.set(value)
self.sc.update(screen_vr)
self.sc.update(screen_vr)
elif txt == "AC":
screen_vr.set("")
self.sc.update(screen_vr.get())
else:
screen_vr.set(screen_vr.get() + txt)
self.sc.update(screen_vr)
except Exception as n:
pass
if __name__ == "__main__":
root = Calculator()
root.geometry("550x600")
root.title("Calculator-Tanish Sarmah")
root.screen()
root.numKeys()
root.operators()
root.configure(bg="grey")
root.mainloop()