A continuación, te mostraré cómo crear una sencilla aplicación de facturación utilizando Python y Tkinter. Esta aplicación permite ingresar los detalles de tres productos, incluyendo su nombre, cantidad y valor unitario. Luego, calcula automáticamente el subtotal para cada producto, el subtotal total de la factura, el IVA al 19% y el total de la factura. Esta herramienta puede ser muy útil para pequeñas empresas o para aquellos que necesitan realizar cálculos de facturación rápida y eficientemente. ¡Acompáñame para descubrir cómo puedes implementar esta solución paso a paso!.

Python con Tkinter: Cómo hacer una factura en Python

Para abordar este programa, iremos desglosando cada bloque de código para su explicación, solo debes tener presente que los códigos aquí expuestos, hacen parte de un mismo archivo .py.

Importando la librerías librerías necesarias

import tkinter as tk
from tkinter import ttk
from tkinter import messagebox

Estas líneas importan Tkinter, la biblioteca estándar de Python para crear interfaces gráficas de usuario, abreviándola como tk para facilitar su uso, junto con ttk para usar widgets con estilos modernos y messagebox para mostrar cuadros de diálogo de mensajes.

Creando la interfaz gráfica con los controles necesarios para la factura

app = tk.Tk()
app.title("Factura")

# Etiquetas y entradas para el producto 1
label_product1 = ttk.Label(app, text="Producto 1:")
label_product1.grid(column=0, row=0, padx=10, pady=5)
entry_product1 = ttk.Entry(app)
entry_product1.grid(column=1, row=0, padx=10, pady=5)

label_qty1 = ttk.Label(app, text="Cantidad:")
label_qty1.grid(column=2, row=0, padx=10, pady=5)
entry_qty1 = ttk.Entry(app)
entry_qty1.grid(column=3, row=0, padx=10, pady=5)

label_price1 = ttk.Label(app, text="Valor Unitario:")
label_price1.grid(column=4, row=0, padx=10, pady=5)
entry_price1 = ttk.Entry(app)
entry_price1.grid(column=5, row=0, padx=10, pady=5)

# Etiquetas y entradas para el producto 2
label_product2 = ttk.Label(app, text="Producto 2:")
label_product2.grid(column=0, row=1, padx=10, pady=5)
entry_product2 = ttk.Entry(app)
entry_product2.grid(column=1, row=1, padx=10, pady=5)

label_qty2 = ttk.Label(app, text="Cantidad:")
label_qty2.grid(column=2, row=1, padx=10, pady=5)
entry_qty2 = ttk.Entry(app)
entry_qty2.grid(column=3, row=1, padx=10, pady=5)

label_price2 = ttk.Label(app, text="Valor Unitario:")
label_price2.grid(column=4, row=1, padx=10, pady=5)
entry_price2 = ttk.Entry(app)
entry_price2.grid(column=5, row=1, padx=10, pady=5)

# Etiquetas y entradas para el producto 3
label_product3 = ttk.Label(app, text="Producto 3:")
label_product3.grid(column=0, row=2, padx=10, pady=5)
entry_product3 = ttk.Entry(app)
entry_product3.grid(column=1, row=2, padx=10, pady=5)

label_qty3 = ttk.Label(app, text="Cantidad:")
label_qty3.grid(column=2, row=2, padx=10, pady=5)
entry_qty3 = ttk.Entry(app)
entry_qty3.grid(column=3, row=2, padx=10, pady=5)

label_price3 = ttk.Label(app, text="Valor Unitario:")
label_price3.grid(column=4, row=2, padx=10, pady=5)
entry_price3 = ttk.Entry(app)
entry_price3.grid(column=5, row=2, padx=10, pady=5)

# Botón para calcular el total
button_calculate = ttk.Button(app, text="Calcular", command=calculate_totals)
button_calculate.grid(column=2, row=3, columnspan=2, pady=20)

# Etiquetas para mostrar los totales
label_subtotal1 = ttk.Label(app, text="Subtotal Producto 1: ")
label_subtotal1.grid(column=0, row=4, columnspan=6, pady=5)
label_subtotal2 = ttk.Label(app, text="Subtotal Producto 2: ")
label_subtotal2.grid(column=0, row=5, columnspan=6, pady=5)
label_subtotal3 = ttk.Label(app, text="Subtotal Producto 3: ")
label_subtotal3.grid(column=0, row=6, columnspan=6, pady=5)
label_subtotal = ttk.Label(app, text="Subtotal Factura: ")
label_subtotal.grid(column=0, row=7, columnspan=6, pady=5)
label_iva = ttk.Label(app, text="IVA (19%): ")
label_iva.grid(column=0, row=8, columnspan=6, pady=5)
label_total = ttk.Label(app, text="Total Factura: ")
label_total.grid(column=0, row=9, columnspan=6, pady=5)

Análisis rápido de la interfaz creada

El código anterior crea una ventana de aplicación con Tkinter titulada «Factura» y añade etiquetas y campos de entrada para ingresar los datos de tres productos (nombre, cantidad y valor unitario). Las etiquetas y los campos de entrada están organizados en una cuadrícula para cada producto, con un botón para calcular los totales. También incluye etiquetas para mostrar los subtotales de cada producto, el subtotal de la factura, el IVA del 19% y el total de la factura, todos dispuestos en una cuadrícula para una presentación clara

Función para calcular los totales de la factura

Esta función es la que se ejecuta luego de presionar el botón, normalmente este código puedes ubicarlo luego de hacer los imports de tkinter:

def calculate_totals():
    try:
        qty1 = int(entry_qty1.get())
        qty2 = int(entry_qty2.get())
        qty3 = int(entry_qty3.get())

        price1 = float(entry_price1.get())
        price2 = float(entry_price2.get())
        price3 = float(entry_price3.get())

        subtotal1 = qty1 * price1
        subtotal2 = qty2 * price2
        subtotal3 = qty3 * price3

        subtotal = subtotal1 + subtotal2 + subtotal3
        iva = subtotal * 0.19
        total = subtotal + iva

        label_subtotal1['text'] = f'Subtotal Producto 1: {subtotal1:.2f}'
        label_subtotal2['text'] = f'Subtotal Producto 2: {subtotal2:.2f}'
        label_subtotal3['text'] = f'Subtotal Producto 3: {subtotal3:.2f}'
        label_subtotal['text'] = f'Subtotal Factura: {subtotal:.2f}'
        label_iva['text'] = f'IVA (19%): {iva:.2f}'
        label_total['text'] = f'Total Factura: {total:.2f}'
    except ValueError:
        label_subtotal1['text'] = 'Error: valores no válidos'
        label_subtotal2['text'] = ''
        label_subtotal3['text'] = ''
        label_subtotal['text'] = ''
        label_iva['text'] = ''
        label_total['text'] = ''
Botón de Suscripción de YouTube Suscríbete y aprende más de Python!

Analizando la función de calcular el total

La función calculate_totals() se encarga de calcular los subtotales, el IVA y el total de una factura. Primero, obtiene las cantidades y precios ingresados para tres productos y los convierte en enteros y flotantes, respectivamente. Luego, calcula el subtotal para cada producto multiplicando la cantidad por el precio unitario, suma estos subtotales para obtener el subtotal de la factura, calcula el IVA al 19% sobre este subtotal y finalmente suma el IVA al subtotal para obtener el total de la factura. Los resultados se muestran en etiquetas de la interfaz. Si hay un error en los valores ingresados, muestra un mensaje de error en lugar de los cálculos.

Visualización de la interfaz de la factura en Python

Para esto solo debes invocar la función mainloop, para que se despliegue el programa, en la parte inferior de tu código.

app.mainloop()

Ingresando los datos y comprobando las salidas de la factura

como hacer una factura en Python

Cómo podemos observar al ingresar los datos de los productos en los campos correspondientes (nombre, cantidad y valor unitario) y pulsar el botón «Calcular», la aplicación procesa estos valores para calcular los subtotales de cada producto, el subtotal de la factura, el IVA al 19% y el total de la factura. Los resultados se muestran de inmediato en la interfaz, permitiendo verificar fácilmente la exactitud de los cálculos. Si se ingresan datos no válidos, la aplicación notifica el error y evita mostrar cálculos incorrectos.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

×