-
Notifications
You must be signed in to change notification settings - Fork 0
/
calculator.py
62 lines (55 loc) · 2.16 KB
/
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
# Calculator form tkinter
from tkinter import *
from tkinter import messagebox
from tkinter import ttk
root = Tk()
root.title("Калькулятор")
root.geometry("500x310")
def calc(key): # логика калькулятора
global memory
if key == "=":
# исключение написание букв
strl = "-+0123456789.*/"
if calc_entry.get()[0] not in strl:
calc_entry.insert(END, " Первый символ не число")
messagebox.showerror("Ошибка","Вы ввели не число!")
# счет
try:
result = eval(calc_entry.get())
calc_entry.insert(END,"="+str(result))
except:
calc_entry.insert(END," Ошибка")
messagebox.showerror("Ошибка","Проверте данные нельза делить на ноль!")
elif key == "C":
calc_entry.delete(0, END)
elif key == "-/+":
if "=" in calc_entry.get():
calc_entry.delete(0,END)
try:
if calc_entry.get()[0] == "-":
calc_entry.delete(0)
else:
calc_entry.insert(0,"-")
except IndexError:
pass
else:
if "=" in calc_entry.get():
calc_entry.delete(0,END)
calc_entry.insert(END, key)
for c in range(5): root.columnconfigure(index=c, weight=1)
for r in range(5): root.rowconfigure(index=r, weight=1)
# Создание всех кнопок
bttn_list = ['7',"8","9","+","-",'4',"5","6","*","/",'1',"2","3","**","** 0.5","0",".","C","-/+","="]
btn = 0
for r in range(5):
if r == 0: continue
for c in range(5):
if bttn_list[btn] is None: continue
cmd = lambda x = bttn_list[btn]: calc(x)
ttk.Button(root, text=bttn_list[btn], command=cmd).grid(row=r, column=c, sticky=NSEW)
# print(f"({r},{c}, {btn}, {bttn_list[btn]})")
btn += 1
calc_entry = Entry(root, width=20, bd=2, font="Helvetica 30 normal", justify="center")
calc_entry.grid(row=0, column=0, columnspan=5, sticky=NSEW)
if __name__ == '__main__':
root.mainloop()