import tkinter as tk
Funciones de operaciones
def agregar_numero(num):
entrada_var.set(entrada_var.get() + str(num))
def limpiar():
entrada_var.set(“”)
def calcular():
try:
resultado = eval(entrada_var.get())
entrada_var.set(str(resultado))
except Exception as e:
entrada_var.set(“Error”)
Crear ventana principal
ventana = tk.Tk()
ventana.title(“Calculadora Avanzada”)
Variable para la entrada
entrada_var = tk.StringVar()
Campo de entrada
entrada = tk.Entry(ventana, textvariable=entrada_var, font=(“Arial”, 20), bd=10, relief=“sunken”, width=15, justify=“right”)
entrada.grid(row=0, column=0, columnspan=4, padx=10, pady=10)
Botones numéricos y operaciones
botones = [
(‘7’, 1, 0), (‘8’, 1, 1), (‘9’, 1, 2), (‘/’, 1, 3),
(‘4’, 2, 0), (‘5’, 2, 1), (‘6’, 2, 2), (‘*’, 2, 3),
(‘1’, 3, 0), (‘2’, 3, 1), (‘3’, 3, 2), (‘-’, 3, 3),
(‘0’, 4, 0), (‘.’, 4, 1), (‘+’, 4, 2), (‘=’, 4, 3),
]
Crear botones y agregar funciones
for (texto, fila, col) in botones:
if texto == “=”:
boton = tk.Button(ventana, text=texto, font=(“Arial”, 20), width=5, height=2, command=calcular)
else:
boton = tk.Button(ventana, text=texto, font=(“Arial”, 20), width=5, height=2, command=lambda num=texto: agregar_numero(num))
boton.grid(row=fila, column=col, padx=5, pady=5)
Botón de limpiar
btn_limpiar = tk.Button(ventana, text=“C”, font=(“Arial”, 20), width=5, height=2, command=limpiar)
btn_limpiar.grid(row=5, column=0, padx=5, pady=5, columnspan=4)
Iniciar la ventana
ventana.mainloop()