Attempting to make a calculator in Python, and an error shows up twice saying that ‘Calculator” has no attribute ‘key’, as well as an issue with something else. How to I fix these errors?
I attempted to initialize the attribute as best I could, and another error occurred. The errors are on lines 31 and 59
`import tkinter as tk
class Calculator:
def init(self, master):
self.master = master
master.title(“Calculator”)
# Create display
self.display = tk.Entry(master, width=35, borderwidth=5, font=('Arial', 16))
self.display.grid(row=0, column=0, columnspan=4, padx=10, pady=10)
# Create buttons
button_list = [
'7', '8', '9', '/',
'4', '5', '6', '*',
'1', '2', '3', '-',
'0', '.', '=', '*'
]
row = 1
col = 0
for button_text in button_list:
button = tk.Button(master, text=button_text, width=5, height=2, font=('Arial', 14),
command=lambda x=button_text: self.button_click(x))
button.grid(row=row, column=col, padx=5, pady=5)
if col > 3:
col = 0
row += 1
# Bind keyboard keys
self.master.bind('<Key>', self.key.press)
def button_click(self, button):
current = self.display.get()
if button == 'C':
self.display.delete(0, tk.END)
elif button == '=':
try:
result = eval(current)
self.display.delete(0, tk.END)
self.display.insert(0, str(result))
except SyntaxError:
self.display.delete(0, tk.END)
self.display.insert(0, "Error")
else:
self.display.delete(0, tk.END)
self.display.insert(0, current + button)
def key_press(self, event):
key = event.char
if key in '0123456789+-*/.':
self.button_click(key)
elif key == 'r':
self.button_click('=')
elif key == 'x1b': # Escape key
self.display.delete(0, tk.END)
root = tk.Tk()
calculator = Calculator(root)
root.mainloop()`
user26363310 is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.