miércoles, 14 de junio de 2023

¿Qué es Tinker?

Tkinter es una biblioteca estándar de Python que permite crear interfaces gráficas de usuario (GUI, por sus siglas en inglés). Proporciona un conjunto de herramientas y widgets para diseñar y construir aplicaciones con ventanas, botones, etiquetas, cuadros de texto, entre otros elementos interactivos.

Calculadora PSI a HP
Figura 1. Calculadora para convertir PSI/GPM a HP

Algunos conceptos clave en Tkinter son:

  • Ventana principal: Es la ventana principal de la aplicación que contiene todos los elementos y widgets.
  • Frames: Son contenedores rectangulares que se utilizan para agrupar y organizar otros widgets. Ayudan a estructurar la interfaz y aplicar diseños.
  • Widgets: Son los componentes interactivos de la interfaz, como botones, etiquetas, campos de entrada de texto, cuadros de lista, etc. Se colocan en las ventanas o frames para interactuar con el usuario.
  • Layouts: Tkinter proporciona varios gestores de diseño, como pack, grid y place, para organizar y posicionar los widgets dentro de una ventana o frame.
  • Eventos: Tkinter permite responder a eventos como clics de botón, movimiento del ratón, pulsaciones de teclas, entre otros. Se pueden asociar funciones (llamadas "callbacks") a los eventos para realizar acciones específicas.
  • Variables: Tkinter incluye variables especiales como StringVar, IntVar, DoubleVar, etc., que se pueden asociar a los widgets para realizar un seguimiento y actualizar automáticamente los valores de los widgets.

Tkinter es ampliamente utilizado para desarrollar aplicaciones de escritorio simples en Python debido a su facilidad de uso y a que forma parte de la biblioteca estándar de Python, lo que significa que no se requiere ninguna instalación adicional.

Calculadora para convertir PSI a HP

import tkinter as tk

def calculate_hp():
    psi = float(entry_psi.get())  # Obtiene el valor ingresado en la entrada de PSI y lo convierte a un número decimal
    gpm = float(entry_gpm.get())  # Obtiene el valor ingresado en la entrada de GPM y lo convierte a un número decimal
    hp = psi * gpm / 1714  # Calcula la potencia en caballos de fuerza (hp) utilizando la fórmula
    result_label.config(text="Potencia en HP: {:.2f}".format(hp))  # Actualiza el texto de la etiqueta de resultado con la potencia calculada

root = tk.Tk()  # Crea la ventana principal de la aplicación
root.title("Calculadora de Potencia")  # Establece el título de la ventana
root.geometry("200x150")  # Establece el tamaño de la ventana

# Frame principal
main_frame = tk.Frame(root, padx=10, pady=10)  # Crea un frame para contener los elementos del formulario con márgenes internos
main_frame.pack()  # Empaqueta el frame en la ventana principal

# Etiqueta y entrada para PSI
psi_label = tk.Label(main_frame, text="PSI:")  # Crea una etiqueta con el texto "PSI"
psi_label.grid(row=0, column=0, sticky="w")  # Ubica la etiqueta en la fila 0 y columna 0 del grid, alineada a la izquierda
entry_psi = tk.Entry(main_frame, width=10)  # Crea una entrada de texto para ingresar el valor de PSI con un ancho de 10 caracteres
entry_psi.grid(row=0, column=1)  # Ubica la entrada de PSI en la fila 0 y columna 1 del grid

# Etiqueta y entrada para GPM
gpm_label = tk.Label(main_frame, text="GPM:")  # Crea una etiqueta con el texto "GPM"
gpm_label.grid(row=1, column=0, sticky="w")  # Ubica la etiqueta en la fila 1 y columna 0 del grid, alineada a la izquierda
entry_gpm = tk.Entry(main_frame, width=10)  # Crea una entrada de texto para ingresar el valor de GPM con un ancho de 10 caracteres
entry_gpm.grid(row=1, column=1)  # Ubica la entrada de GPM en la fila 1 y columna 1 del grid

# Botón de cálculo
calculate_button = tk.Button(main_frame, text="Calcular", command=calculate_hp, width=10, height=2)  # Crea un botón con el texto "Calcular", que ejecuta la función calculate_hp al ser presionado, con un ancho de 10 y altura de 2
calculate_button.grid(row=2, columnspan=2)  # Ubica el botón en la fila 2 y se extiende a lo ancho de las dos columnas

# Etiqueta de resultado
result_label = tk.Label(main_frame, text="Potencia en HP:", pady=10)  # Crea una etiqueta con el texto "Potencia en HP" y un espacio vertical de 10 píxeles
result_label.grid(row=3, columnspan=2)  # Ubica la etiqueta en la fila 3