Para crear una interfaz gráfica en Python que muestre la tabla de productos vencidos de la tabla inventario, podemos utilizar la biblioteca `tkinter` para crear la interfaz y `sqlite3` para interactuar con la base de datos. A continuación, te muestro un ejemplo de cómo podrías hacerlo:
```python
import tkinter as tk
from tkinter import ttk
import sqlite3
# Conectar a la base de datos
conn = sqlite3.connect('inventario.db')
cursor = conn.cursor()
# Crear la tabla inventario si no existe
cursor.execute('''
CREATE TABLE IF NOT EXISTS inventario (
id INTEGER PRIMARY KEY,
nombre_producto TEXT,
fecha_vencimiento DATE,
cantidad INTEGER,
sucursal TEXT
)
''')
# Función para obtener los productos vencidos
def obtener_productos_vencidos():
cursor.execute('''
SELECT * FROM inventario
WHERE fecha_vencimiento < DATE('now')
''')
productos_vencidos = cursor.fetchall()
return productos_vencidos
# Función para crear la tabla en la interfaz
def crear_tabla():
for widget in tabla_frame.winfo_children():
widget.destroy()
productos_vencidos = obtener_productos_vencidos()
if productos_vencidos:
columnas = ['ID', 'Nombre Producto', 'Fecha Vencimiento', 'Cantidad', 'Sucursal']
tree = ttk.Treeview(tabla_frame, columns=columnas, show='headings')
for columna in columnas:
tree.heading(columna, text=columna)
for producto in productos_vencidos:
tree.insert('', 'end', values=producto)
tree.pack(fill='both', expand=True)
else:
label = ttk.Label(tabla_frame, text='No hay productos vencidos')
label.pack(fill='both', expand=True)
# Crear la interfaz
root = tk.Tk()
root.title('Productos Vencidos')
tabla_frame = ttk.Frame(root)
tabla_frame.pack(fill='both', expand=True)
boton = ttk.Button(root, text='Actualizar tabla', command=crear_tabla)
boton.pack(fill='x')
crear_tabla()
root.mainloop()
# Cerrar la conexión a la base de datos
conn.close()
```
En este ejemplo, creamos una interfaz con un botón que, cuando se presiona, actualiza la tabla con los productos vencidos de la base de datos. La tabla se muestra en un frame dentro de la interfaz principal.
Recuerda que debes crear una base de datos llamada `inventario.db` en el mismo directorio que el script, y que la tabla `inventario` debe tener las columnas `id`, `nombre_producto`, `fecha_vencimiento`, `cantidad` y `sucursal`.