# your code goes here
from tkinter import *
from tkinter import messagebox
from tkinter import ttk
root = Tk()
root.title("Калькулятор")
#логика калькулятора
def calc(key):
global memory
if key== "=":
#исключаем написание букв
str1 = "-+0123456789.*/"
if calc_entry.get()[0] not in str1:
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)
#кнопки
bttn_list = [
"7", "8", "9", "+", "-",
"4", "5", "6", "*", "/",
"1", "2", "3", "-\+", "=",
"0", ".", "C"
]
r = 1
c = 0
for i in bttn_list:
rel = ""
cmd=lambda x=i: calc(x)
ttk.Button(root, text=i, command=cmd).grid(row=r, column=c)
c += 1
if c>4:
c=0
r += 1
calc_entry = Entry(root, width =33)
calc_entry.grid(row=0, column = 0, columnspan=5)
root.mainloop()
IyB5b3VyIGNvZGUgZ29lcyBoZXJlCmZyb20gdGtpbnRlciBpbXBvcnQgKgpmcm9tIHRraW50ZXIgaW1wb3J0IG1lc3NhZ2Vib3gKZnJvbSB0a2ludGVyIGltcG9ydCB0dGsKCnJvb3QgPSBUaygpCnJvb3QudGl0bGUoItCa0LDQu9GM0LrRg9C70Y/RgtC+0YAiKQoj0LvQvtCz0LjQutCwINC60LDQu9GM0LrRg9C70Y/RgtC+0YDQsApkZWYgY2FsYyhrZXkpOgogICAgZ2xvYmFsIG1lbW9yeQogICAgaWYga2V5PT0gIj0iOgogICAgICAgICPQuNGB0LrQu9GO0YfQsNC10Lwg0L3QsNC/0LjRgdCw0L3QuNC1INCx0YPQutCyCiAgICAgICAgc3RyMSA9ICItKzAxMjM0NTY3ODkuKi8iCiAgICAgICAgaWYgY2FsY19lbnRyeS5nZXQoKVswXSBub3QgaW4gc3RyMToKICAgICAgICAgICAgY2FsY19lbnRyeS5pbnNlcnQoRU5ELCAi0KHQuNC80LLQvtC7INC90LUg0YfQuNGB0LvQviEiKQogICAgICAgICAgICBtZXNzYWdlYm94LnNob3dlcnJvcigi0J7RiNC40LHQutCwISwg0JLQstC10LvQuCDQvdC1INGH0LjRgdC70L4hIikKI9GB0YfRkdGCCiAgICAgICAgdHJ5OgogICAgICAgICAgICByZXN1bHQgPSBldmFsKGNhbGNfZW50cnkuZ2V0KCkpCiAgICAgICAgICAgIGNhbGNfZW50cnkuaW5zZXJ0KEVORCwgIj0iICsgc3RyIChyZXN1bHQpKQogICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgY2FsY19lbnRyeS5pbnNlcnQoRU5ELCAi0J7RiNC40LHQutCwISIpCiAgICAgICAgICAgIG1lc3NhZ2Vib3guc2hvd2Vycm9yKCLQn9C10YDQtdC/0YDQvtCy0LXRgNGMISIpCgoj0L7Rh9C40YHRgtC40YLRjCDQv9C+0LvQtQogICAgZWxpZiBrZXkgPT0gIkMiOgogICAgICAgIGNhbGNfZW50cnkuZGVsZXRlKDAsRU5EKQoKI9GB0LzQtdC90LAgKy8tCiAgICBlbGlmIGtleSA9PSAiLVwrIjoKICAgICAgICBpZiAiPSIgaW4gY2FsY19lbnRyeS5nZXQoKToKICAgICAgICAgICAgY2FsY19lbnRyeS5kZWxldGUoMCxFTkQpCiAgICAgICAgdHJ5OgogICAgICAgICAgICBpZiBjYWxjX2VudHJ5LmdldCgpWzBdID09ICItIjoKICAgICAgICAgICAgICAgIGNhbGNfZW50cnkuZGVsZXRlKDApCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBjYWxjX2VudHJ5Lmluc2VydCgwLCAiLSIpCiAgICAgICAgZXhjZXB0IEluZGV4RXJyb3I6CiAgICAgICAgICAgIHBhc3MKICAgIGVsc2U6CiAgICAgICAgaWYgIj0iIGluIGNhbGNfZW50cnkuZ2V0KCk6CiAgICAgICAgICAgIGNhbGNfZW50cnkuZGVsZXRlKDAsRU5EKQogICAgICAgIGNhbGNfZW50cnkuaW5zZXJ0KEVORCwga2V5KQoj0LrQvdC+0L/QutC4CmJ0dG5fbGlzdCA9IFsKICAgICI3IiwgIjgiLCAiOSIsICIrIiwgIi0iLAogICAgIjQiLCAiNSIsICI2IiwgIioiLCAiLyIsCiAgICAiMSIsICIyIiwgIjMiLCAiLVwrIiwgIj0iLAogICAgIjAiLCAiLiIsICJDIgpdCnIgPSAxCmMgPSAwCgpmb3IgaSBpbiBidHRuX2xpc3Q6CiAgICByZWwgPSAiIgogICAgY21kPWxhbWJkYSB4PWk6IGNhbGMoeCkKICAgIHR0ay5CdXR0b24ocm9vdCwgdGV4dD1pLCBjb21tYW5kPWNtZCkuZ3JpZChyb3c9ciwgY29sdW1uPWMpCiAgICBjICs9IDEKICAgIGlmIGM+NDoKICAgICAgICBjPTAKICAgICAgICByICs9IDEKCmNhbGNfZW50cnkgPSBFbnRyeShyb290LCB3aWR0aCA9MzMpCmNhbGNfZW50cnkuZ3JpZChyb3c9MCwgY29sdW1uID0gMCwgY29sdW1uc3Bhbj01KQoKcm9vdC5tYWlubG9vcCgpCgo=