Ребят, помогите, я хочу сделать операцию со скобками в своём калькуляторе, но он выдаёт ошибку. SyntaxError: SyntaxError: '(' was never closed. Помоги

import tkinter as tk
from tkinter import messagebox
#functions
def add_digit(digit):
    value = calc.get()
    if value[0]=='0' and len(value)==1:
        value = value[1:]
    calc['state']=tk.NORMAL
    calc.delete(0,tk.END)
    calc.insert(0,value+digit)


def add_operation(operation):
    value = calc.get()
    if value[-1] in '-+*/.':
        value = value[:-1]
    elif '+' in value or '-' in value or '*' in value or '/' in value or '.' in value:
        calculate()
    calc.delete(0,tk.END)
    calc.insert(0,value+operation)

def calculate():
    value = calc.get()
    if value[-1] in '+-/*.':
        value=value+value[:-1]
    calc.delete(0, tk.END)
    try:
        calc.insert(0, eval(value))
    except (NameError, SyntaxError):
        messagebox.showerror('Ошибка!','Нельзя вводить буквы или другие символы в терминал!')
        calc.insert(0,0)
    except ZeroDivisionError:
        messagebox.showerror('Ошибка!','На ноль делить нельзя!')
        calc.insert(0,0)


def clear():
    calc.delete(0, tk.END)
    calc.insert(0, '0')

def press_key(event):
    print(event.char)
    if event.char.isdigit():
        add_digit(event.char)
    elif event.char in '+-/*.':
        add_operation(event.char)
    elif event.char == '\r':
        calculate()

def create_digit_button(digit):
    return tk.Button(text=digit,bd=5, font=('Arial', 13),command= lambda : add_digit(digit))

def create_opertation_button(operation):
    return tk.Button(text=operation,bd=5, font=('Arial', 13),fg='red',
                            command= lambda : add_operation(operation))

def create_calc_button(operation):
    return tk.Button(text=operation,bd=5, font=('Arial', 13),fg='red',
                                command=calculate)

def create_clear_button(operation):
    return tk.Button(text=operation,bd=5, font=('Arial', 13),fg='red',
                                command=clear)

#tools
win = tk.Tk()
win.geometry("280x280+100+100")
win.title('Calc')
win['bg']='Cyan'
photo = tk.PhotoImage(file='calculator.png')
win.iconphoto(False, photo)

win.bind('<Key>', press_key)

#Terminal
calc=tk.Entry(win, justify=tk.RIGHT, font=('Arial', 15),width=15)
calc.insert(0,'0')
calc['state']=tk.DISABLED
calc.grid(row=0,column=0, columnspan=5, stick='we', padx=5)

#Buttons
create_digit_button('1').grid(row=1,column=0, stick='wens', padx=5, pady=5)
create_digit_button('2').grid(row=1,column=1, stick='wens', padx=5, pady=5)
create_digit_button('3').grid(row=1,column=2, stick='wens', padx=5, pady=5)
create_digit_button('4').grid(row=2,column=0, stick='wens', padx=5, pady=5)
create_digit_button('5').grid(row=2,column=1, stick='wens', padx=5, pady=5)
create_digit_button('6').grid(row=2,column=2, stick='wens', padx=5, pady=5)
create_digit_button('7').grid(row=3,column=0, stick='wens', padx=5, pady=5)
create_digit_button('8').grid(row=3,column=1, stick='wens', padx=5, pady=5)
create_digit_button('9').grid(row=3,column=2, stick='wens', padx=5, pady=5)
create_digit_button('0').grid(row=4,column=1, stick='wens', padx=5, pady=5)
create_digit_button('(').grid(row=2,column=4, stick='wens', padx=5, pady=5)
create_digit_button(')').grid(row=3,column=4, stick='wens', padx=5, pady=5)

create_opertation_button('+').grid(row=1,column=3, stick='wens', padx=5, pady=5)
create_opertation_button('-').grid(row=2,column=3, stick='wens', padx=5, pady=5)
create_opertation_button('/').grid(row=3,column=3, stick='wens', padx=5, pady=5)
create_opertation_button('*').grid(row=4,column=3, stick='wens', padx=5, pady=5)
create_opertation_button('.').grid(row=1,column=4, stick='wens', padx=5, pady=5)



create_calc_button('=').grid(row=4,column=2, stick='wens', padx=5, pady=5)
create_clear_button('C').grid(row=4,column=0, stick='wens', padx=5, pady=5)

#configures
win.grid_columnconfigure(0,minsize=60)
win.grid_columnconfigure(1,minsize=60)
win.grid_columnconfigure(2,minsize=60)
win.grid_columnconfigure(3,minsize=60)

win.grid_rowconfigure(1,minsize=60)
win.grid_rowconfigure(2,minsize=60)
win.grid_rowconfigure(3,minsize=60)
win.grid_rowconfigure(4,minsize=60)

#Boot
win.mainloop()

Ответы (0 шт):