├── Calculator.py └── README.md /Calculator.py: -------------------------------------------------------------------------------- 1 | from tkinter import * 2 | 3 | 4 | root = Tk() 5 | root.title("Bruno's Calculator") 6 | 7 | operation_number = 0 8 | current_number_sum = 0 9 | current_number_minus = 0 10 | current_number_division = 0 11 | current_number_multiply = 0 12 | 13 | e = Entry(root, width = 50, borderwidth=5) 14 | e.grid(row=0, column=0, columnspan=4) 15 | 16 | def button_click(number, entry): 17 | current_number = e.get() 18 | e.delete(0, END) 19 | e.insert(0, str(current_number) + str(number)) 20 | 21 | 22 | def sum_click(): 23 | global current_number_sum, operation_number 24 | if operation_number == 0: 25 | new_current_number = 0 26 | current_number_sum = e.get() 27 | if current_number_sum != "": 28 | e.delete(0, END) 29 | operation_number = 1 30 | else: 31 | print("please input a number") 32 | pass 33 | elif operation_number == 1: 34 | new_current_number = e.get() 35 | e.delete(0,END) 36 | if "." in str(current_number_sum): 37 | current_number_sum = float(current_number_sum) + float(new_current_number) 38 | e.insert(0, current_number_sum) 39 | else: 40 | current_number_sum = int(current_number_sum) + int(new_current_number) 41 | e.insert(0, str(current_number_sum)) 42 | 43 | def minus_click(): 44 | global current_number_minus, operation_number 45 | if operation_number == 0: 46 | new_current_number = 0 47 | current_number_minus = e.get() 48 | if current_number_minus != "": 49 | e.delete(0, END) 50 | operation_number = 2 51 | else: 52 | print("please input a number") 53 | pass 54 | elif operation_number == 2: 55 | new_current_number = e.get() 56 | e.delete(0,END) 57 | if "." in str(current_number_minus): 58 | current_number_minus = float(current_number_minus) - float(new_current_number) 59 | e.insert(0, current_number_minus) 60 | else: 61 | current_number_minus = int(current_number_minus) - int(new_current_number) 62 | e.insert(0, str(current_number_minus)) 63 | 64 | def multiply_click(): 65 | global current_number_multiply, operation_number 66 | if operation_number == 0: 67 | new_current_number = 0 68 | current_number_multiply = e.get() 69 | if current_number_multiply != "": 70 | e.delete(0, END) 71 | operation_number = 3 72 | else: 73 | print("please input a number") 74 | pass 75 | elif operation_number == 3: 76 | new_current_number = e.get() 77 | e.delete(0,END) 78 | if "." in str(current_number_multiply): 79 | current_number_multiply = float(current_number_multiply) * float(new_current_number) 80 | e.insert(0, current_number_multiply) 81 | else: 82 | current_number_multiply = int(current_number_multiply) * int(new_current_number) 83 | e.insert(0, str(current_number_multiply)) 84 | 85 | def division_click(): 86 | global current_number_division, operation_number 87 | if operation_number == 0: 88 | new_current_number = 0 89 | current_number_division = e.get() 90 | if current_number_division != "": 91 | e.delete(0, END) 92 | operation_number = 4 93 | else: 94 | print("please input a number") 95 | pass 96 | elif operation_number == 4: 97 | new_current_number = e.get() 98 | e.delete(0,END) 99 | 100 | try: 101 | if "." in str(current_number_division): 102 | current_number_division = float(current_number_division) / float(new_current_number) 103 | e.insert(0, current_number_division) 104 | else: 105 | current_number_division = int(current_number_division) / int(new_current_number) 106 | e.insert(0, str(current_number_division)) 107 | except ZeroDivisionError: 108 | e.insert(0, 'Can not divide by zero.') 109 | 110 | def toPowerof(): 111 | global current_number_power, operation_number 112 | current_number_power = e.get() 113 | if current_number_power != "": 114 | e.delete(0, END) 115 | operation_number = 5 116 | else: 117 | print("please input a number") 118 | pass 119 | 120 | def positive_negative(): 121 | try: 122 | current_number = e.get() 123 | e.delete(0, END) 124 | if "." in current_number: 125 | e.insert(0, -(float(current_number))) 126 | else: 127 | e.insert(0, -(int(current_number))) 128 | except: 129 | print("There is no number") 130 | pass 131 | 132 | def delete(): 133 | try: 134 | current_number = e.get() 135 | e.delete(0, END) 136 | current_number = current_number[:-1] 137 | e.insert(0, current_number) 138 | except: 139 | print("No number to delete") 140 | pass 141 | 142 | def add_point(): 143 | current_number = e.get() 144 | if "." in current_number: 145 | print("Number already has a point") 146 | pass 147 | else: 148 | if current_number != "": 149 | current_number = str(current_number) + str(".") 150 | e.delete(0,END) 151 | e.insert(0, current_number) 152 | else: 153 | current_number = "0." 154 | e.insert(0, current_number) 155 | 156 | def equals_click(): 157 | global current_number_sum, current_number_minus, current_number_multiply, operation_number 158 | current_number = e.get() 159 | e.delete(0, END) 160 | if operation_number == 0: 161 | e.insert(0,current_number) 162 | print("nothing to do") 163 | elif operation_number == 1: 164 | if "." in str(current_number_sum): 165 | e.insert(0, float(current_number_sum) + float(current_number)) 166 | operation_number = 0 167 | else: 168 | e.insert(0, int(current_number_sum) + int(current_number)) 169 | operation_number = 0 170 | elif operation_number == 2: 171 | if "." in current_number_minus: 172 | e.insert(0, float(current_number_minus) - float(current_number)) 173 | operation_number = 0 174 | else: 175 | e.insert(0, int(current_number_minus) - int(current_number)) 176 | operation_number = 0 177 | elif operation_number == 3: 178 | if "." in current_number_multiply: 179 | e.insert(0, float(current_number_multiply) * float(current_number)) 180 | operation_number = 0 181 | else: 182 | e.insert(0, int(current_number_multiply) * int(current_number)) 183 | operation_number = 0 184 | elif operation_number == 4: 185 | 186 | try: 187 | if "." in current_number_division: 188 | e.insert(0, float(current_number_division) / float(current_number)) 189 | operation_number = 0 190 | else: 191 | e.insert(0, int(current_number_division) / int(current_number)) 192 | operation_number = 0 193 | except ZeroDivisionError: 194 | e.insert(0, 'Can not divide by zero.') 195 | 196 | elif operation_number == 5: 197 | if "." in current_number_power: 198 | e.insert(0, float(current_number_power) ** float(current_number)) 199 | operation_number = 0 200 | else: 201 | e.insert(0, int(current_number_power) ** int(current_number)) 202 | operation_number = 0 203 | 204 | def clear_entry(): 205 | global current_number_sum, current_number_minus, current_number_multiply,current_number_division, operation_number 206 | operation_number = 0 207 | current_number_sum = 0 208 | current_number_multiply = 0 209 | current_number_minus = 0 210 | current_number_division = 0 211 | e.delete(0, END) 212 | 213 | button_powerto = Button(root, borderwidth=2, text="xY",padx=36, pady=20, command= lambda: toPowerof()).grid(row=5, column=2) 214 | button_point = Button(root, borderwidth=2, text=".", padx=41, pady=20, command= lambda: add_point()).grid(row=5, column=1) 215 | 216 | button_sum = Button(root, borderwidth=2, text="+", padx=37, pady=20, command= lambda: sum_click()).grid(row=3, column=3) 217 | button_equals = Button(root, borderwidth=2, text="=", padx=36, pady=20, command= lambda: equals_click()).grid(row=5, column=3) 218 | button_clear = Button(root, borderwidth=2, text="CE", padx=37, pady=20,command= lambda: clear_entry()).grid(row=4, column=0) 219 | 220 | button_minus = Button(root, borderwidth=2, text="-", padx=38, pady=20, command= lambda: minus_click()).grid(row=2, column=3) 221 | button_multiply = Button(root, borderwidth=2, text="X", padx=37, pady=20, command= lambda: multiply_click()).grid(row=1, column=3) 222 | button_negative_positive = Button(root, borderwidth=2, text="+/-", padx=37, pady=20, command= lambda: positive_negative()).grid(row=4, column=2) 223 | 224 | button_divide = Button(root, borderwidth=2, text="/", padx=38, pady=20, command= lambda: division_click()).grid(row=4, column=3) 225 | button_del = Button(root, borderwidth=2, text="DEL",fg='red', padx=34, pady=20, command= lambda: delete()).grid(row=5, column=0) 226 | button_0 = Button(root, borderwidth=2, text="0", padx=40, pady=20, command=lambda: button_click(0, e)).grid(row=4, column=1) 227 | 228 | button_1 = Button(root, borderwidth=2, text="1", padx=40, pady=20, command=lambda: button_click(1, e)).grid(row=3, column=0) 229 | button_2 = Button(root, borderwidth=2, text="2", padx=40, pady=20, command=lambda: button_click(2, e)).grid(row=3, column=1) 230 | button_3 = Button(root, borderwidth=2, text="3", padx=40, pady=20, command=lambda: button_click(3, e)).grid(row=3, column=2) 231 | 232 | button_4 = Button(root, borderwidth=2, text="4", padx=40, pady=20, command=lambda: button_click(4, e)).grid(row=2, column=0) 233 | button_5 = Button(root, borderwidth=2, text="5", padx=40, pady=20, command=lambda: button_click(5, e)).grid(row=2, column=1) 234 | button_6 = Button(root, borderwidth=2, text="6", padx=40, pady=20, command=lambda: button_click(6, e)).grid(row=2, column=2) 235 | 236 | button_7 = Button(root, borderwidth=2, text="7", padx=40, pady=20, command=lambda: button_click(7, e)).grid(row=1, column=0) 237 | button_8 = Button(root, borderwidth=2, text="8", padx=40, pady=20, command=lambda: button_click(8, e)).grid(row=1, column=1) 238 | button_9 = Button(root, borderwidth=2, text="9", padx=40, pady=20, command=lambda: button_click(9, e)).grid(row=1,column=2) 239 | 240 | 241 | 242 | root.mainloop() 243 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Python-Calculator 2 | Calculator i made in python with tkinter 3 | --------------------------------------------------------------------------------