So the thing is that in onw video the youtuber removed the lambda on the equal and Clear buttons of the calculator, but my code (that I basically copied from him) only works with the lambda (in his video his code did not work with lambda), so I want to understando why.... Ty (The video link https://www.youtube.com/watch?v=NzSCNjn4_RI)
The thing is in these lines:
btn_equals.grid(row=6, column=3, columnspan=2)
btn_clear = tk.Button(root, text='C', command=lambda: clear_field(), width=16, font=('Arial', 14))
btn_clear.grid(row=6, column=1, columnspan=2)
root.mainloop()
And here is the whole code (any suggestions on what would make it better would be appreciated (I am new to programming:
import tkinter as tk
calculation = ""
def add_to_calculation(symbol):
global calculation
calculation += str(symbol)
text_result.delete(1.0, 'end')
text_result.insert(1.0, calculation)
def evaluate_calculation():
global calculation
try:
calculation = str(eval(calculation))
text_result.delete(1.0, 'end')
text_result.insert(1.0, calculation)
except:
clear_field()
text_result.insert(1.0, "Erro")
def clear_field():
global calculation
calculation = ""
text_result.delete(1.0, 'end')
root = tk.Tk()
root.geometry("380x450")
text_result = tk.Text(root, height=2.3, width=21, font=("Arial", 24))
text_result.grid(columnspan=5)
btn_1 = tk.Button(root, text='1', command=lambda: add_to_calculation(1), width=7, font=('Arial', 14))
btn_1.grid(row=2, column=1)
btn_2 = tk.Button(root, text='2', command=lambda: add_to_calculation(2), width=7, font=('Arial', 14))
btn_2.grid(row=2, column=2)
btn_3 = tk.Button(root, text='3', command=lambda: add_to_calculation(3), width=7, font=('Arial', 14))
btn_3.grid(row=2, column=3)
btn_4 = tk.Button(root, text='4', command=lambda: add_to_calculation(4), width=7, font=('Arial', 14))
btn_4.grid(row=3, column=1)
btn_5 = tk.Button(root, text='5', command=lambda: add_to_calculation(5), width=7, font=('Arial', 14))
btn_5.grid(row=3, column=2)
btn_6 = tk.Button(root, text='6', command=lambda: add_to_calculation(6), width=7, font=('Arial', 14))
btn_6.grid(row=3, column=3)
btn_7 = tk.Button(root, text='7', command=lambda: add_to_calculation(7), width=7, font=('Arial', 14))
btn_7.grid(row=4, column=1)
btn_8 = tk.Button(root, text='8', command=lambda: add_to_calculation(8), width=7, font=('Arial', 14))
btn_8.grid(row=4, column=2)
btn_9 = tk.Button(root, text="9", command=lambda: add_to_calculation(9), width=7, font=('Arial', 14))
btn_9.grid(row=4, column=3)
btn_0 = tk.Button(root, text='0', command=lambda: add_to_calculation(0), width=7, font=('Arial', 14))
btn_0.grid(row=5, column=1)
btn_plus = tk.Button(root, text="+", command=lambda: add_to_calculation("+"), width=7, font=('Arial', 14))
btn_plus.grid(row=2, column=4)
btn_minus = tk.Button(root, text='-', command=lambda: add_to_calculation("-"), width=7, font=('Arial', 14))
btn_minus.grid(row=3, column=4)
btn_mult = tk.Button(root, text='x', command=lambda: add_to_calculation("*"), width=7, font=('Arial', 14))
btn_mult.grid(row=4, column=4)
btn_div = tk.Button(root, text='/', command=lambda: add_to_calculation("/"), width=7, font=('Arial', 14))
btn_div.grid(row=5, column=4)
btn_open = tk.Button(root, text='(', command=lambda: add_to_calculation("("), width=7, font=('Arial', 14))
btn_open.grid(row=5, column=2)
btn_close = tk.Button(root, text=')', command=lambda: add_to_calculation(")"), width=7, font=('Arial', 14))
btn_close.grid(row=5, column=3)
btn_equals = tk.Button(root, text="=", command=lambda: evaluate_calculation(), width=16, font=('Arial', 14))
btn_equals.grid(row=6, column=3, columnspan=2)
btn_clear = tk.Button(root, text='C', command=lambda: clear_field(), width=16, font=('Arial', 14))
btn_clear.grid(row=6, column=1, columnspan=2)
root.mainloop()
I want to understand why the equal and clear buttons only works with the lambda in my code, but in the code of the youtuber it only works without the lambda. Thank you all