Untitled
unknown
plain_text
a year ago
2.0 kB
9
Indexable
import tkinter as tk
# Create the main window
root = tk.Tk()
root.title("Calculator")
# Set the window size
root.geometry("400x500")
# Global variable to store the expression
expression = ""
# Function to update the expression in the input field
def press(num):
global expression
expression += str(num)
equation.set(expression)
# Function to evaluate the expression
def equal_press():
try:
global expression
# Evaluate the expression
total = str(eval(expression))
equation.set(total)
expression = ""
except:
equation.set(" error ")
expression = ""
# Function to clear the input field
def clear():
global expression
expression = ""
equation.set("")
# Create the input field
equation = tk.StringVar()
input_field = tk.Entry(root, textvariable=equation, font=('arial', 20, 'bold'), bd=10, insertwidth=4, width=14, borderwidth=4)
input_field.grid(columnspan=4)
# Create buttons for the calculator
buttons = [
'7', '8', '9', '/',
'4', '5', '6', '*',
'1', '2', '3', '-',
'C', '0', '=', '+'
]
# Create buttons and place them on the grid
row_val = 1
col_val = 0
for button in buttons:
if button == "=":
btn = tk.Button(root, text=button, padx=20, pady=20, font=('arial', 18, 'bold'), command=equal_press)
elif button == "C":
btn = tk.Button(root, text=button, padx=20, pady=20, font=('arial', 18, 'bold'), command=clear)
else:
btn = tk.Button(root, text=button, padx=20, pady=20, font=('arial', 18, 'bold'), command=lambda x=button: press(x))
btn.grid(row=row_val, column=col_val, sticky="nsew")
col_val += 1
if col_val > 3:
col_val = 0
row_val += 1
# Make the grid cells expandable
for i in range(4):
root.grid_columnconfigure(i, weight=1)
for i in range(5):
root.grid_rowconfigure(i, weight=1)
# Start the application
root.mainloop()
Editor is loading...
Leave a Comment