Download as txt, pdf, or txt
Download as txt, pdf, or txt
You are on page 1of 1

import tkinter as tk

from tkinter import messagebox

class Calculator(tk.Tk):
def __init__(self):
super().__init__()
self.title("Calculator")
self.geometry("400x400")

self.result_var = tk.StringVar()

self.create_widgets()

def create_widgets(self):
entry = tk.Entry(self, textvariable=self.result_var, font=(
'Arial', 24), bd=10, insertwidth=4, width=14, borderwidth=4)
entry.grid(row=0, column=0, columnspan=4)

buttons = [
'7', '8', '9', '/',
'4', '5', '6', '*',
'1', '2', '3', '-',
'C', '0', '=', '+'
]

row_val = 1
col_val = 0
for button in buttons:
def action(x=button): return self.on_button_click(x)
tk.Button(self, text=button, padx=20, pady=20, bd=8, fg="black",
font=('Arial', 18),
command=action).grid(row=row_val, column=col_val)
col_val += 1
if col_val > 3:
col_val = 0
row_val += 1

def on_button_click(self, char):


if char == 'C':
self.result_var.set("")
elif char == '=':
try:
expression = self.result_var.get()
result = eval(expression)
self.result_var.set(result)
except:
messagebox.showerror("Error", "Invalid Expression")
else:
current_text = self.result_var.get()
new_text = current_text + str(char)
self.result_var.set(new_text)

if __name__ == "__main__":
app = Calculator()
app.mainloop()

You might also like