'''
Autor: Manuel Míguez Liméns
Fecha: 23/12/2023
Título: Calculadora
'''
# Importamos las librerías que vamos a necesitar.
import tkinter as tk
from tkinter import messagebox
import math
# Creamos la función calcular
def calculate():
try:
expression = entry.get()
result = eval(expression)
entry.delete(0, tk.END)
entry.insert(tk.END, str(result))
except Exception as e:
messagebox.showerror("Error", "Entrada inválida")
# Creamos la función borrar
def clear():
entry.delete(0, tk.END)
# Creamos la función insertar texto
def insert_text(text):
entry.insert(tk.END, text)
# Creamos la función que nos permitirá convertir a binario
def convert_to_binary():
try:
num = float(entry.get())
binary = bin(int(num))
entry.delete(0, tk.END)
entry.insert(tk.END, binary)
except Exception as e:
messagebox.showerror("Error", "No se puede convertir a binario")
# Creamos la función que nos permitirá convertir a hexadecimal
def convert_to_hex():
try:
num = float(entry.get())
hex_num = hex(int(num))
entry.delete(0, tk.END)
entry.insert(tk.END, hex_num)
except Exception as e:
messagebox.showerror("Error", "No se puede convertir a hexadecimal")
# Creamos la función que nos permitirá convertir a octal
def convert_to_octal():
try:
num = float(entry.get())
octal = oct(int(num))
entry.delete(0, tk.END)
entry.insert(tk.END, octal)
except Exception as e:
messagebox.showerror("Error", "No se puede convertir a octal")
# Crear la ventana principal
root = tk.Tk()
root.title("Calculadora")
# Entrada
entry = tk.Entry(root, width=40, borderwidth=5)
entry.grid(row=0, column=0, columnspan=4, padx=10, pady=10)
# Botones
buttons = [
("7", "8", "9", "/"),
("4", "5", "6", "*"),
("1", "2", "3", "-"),
("0", ".", "%", "+"),
("(", ")", "bin", "C"),
("Hex", "Oct", "e", "=")
]
row_num = 1
col_num = 0
for row in buttons:
for button_text in row:
if button_text == "=":
btn = tk.Button(root, text=button_text, padx=40, pady=20, command=calculate)
elif button_text == "C":
btn = tk.Button(root, text=button_text, padx=40, pady=20, command=clear)
elif button_text == "bin":
btn = tk.Button(root, text=button_text, padx=40, pady=20, command=convert_to_binary)
elif button_text == "Hex":
btn = tk.Button(root, text=button_text, padx=40, pady=20, command=convert_to_hex)
elif button_text == "Oct":
btn = tk.Button(root, text=button_text, padx=40, pady=20, command=convert_to_octal)
else:
btn = tk.Button(root, text=button_text, padx=40, pady=20, command=lambda text=button_text: insert_text(text))
btn.grid(row=row_num, column=col_num, padx=5, pady=5)
col_num += 1
row_num += 1
col_num = 0
root.mainloop()
Comentarios sobre la versión: 3.11 (0)
No hay comentarios