Uso de Python con Sqlite y Tkinter (TK) | Práctica de Programación Básica por Andry Gamaliel

Posted by


En este tutorial vamos a aprender cómo utilizar Python con SQLite y Tkinter para crear una aplicación de gestión de datos básica. SQLite es una biblioteca de base de datos ligera que nos permite crear y gestionar bases de datos locales sin necesidad de un servidor. Tkinter, por otro lado, es una biblioteca de interfaz gráfica de usuario (GUI) que nos permite crear interfaces de usuario para nuestras aplicaciones.

En este tutorial, vamos a crear una aplicación de gestión de contactos en la que podremos añadir, editar, eliminar y buscar contactos en una base de datos SQLite. Para empezar, asegúrate de tener instalado Python en tu sistema.

Paso 1: Instalar Tkinter y SQLite

Lo primero que necesitamos hacer es instalar las bibliotecas de Tkinter y SQLite. Si estás utilizando Python 3, Tkinter ya debería estar instalado por defecto. Para instalar SQLite, puedes hacerlo a través del gestor de paquetes pip de Python. Puedes instalar sqlite3 utilizando el siguiente comando:

pip install sqlite3

Paso 2: Crear la base de datos

Lo siguiente que tenemos que hacer es crear una base de datos SQLite y una tabla para almacenar nuestros contactos. Para ello, vamos a utilizar el siguiente script:

import sqlite3

# Conexión a la base de datos
conn = sqlite3.connect('contactos.db')

# Crear tabla de contactos
conn.execute('''
CREATE TABLE IF NOT EXISTS contactos (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    nombre TEXT NOT NULL,
    telefono TEXT NOT NULL,
    email TEXT
)
''')

conn.commit()
conn.close()

Este script se encarga de conectarse a la base de datos, crear una tabla llamada "contactos" con los campos nombre, teléfono y email, y luego cerrar la conexión. Guarda este script en un archivo llamado "crear_db.py" y ejecútalo para crear la base de datos.

Paso 3: Crear la interfaz de usuario con Tkinter

Ahora vamos a crear la interfaz de usuario para nuestra aplicación utilizando Tkinter. Crearemos una ventana principal con un formulario para añadir contactos y una lista para mostrar los contactos existentes.

import tkinter as tk
from tkinter import messagebox

class ContactosApp:

    def __init__(self, root):
        self.root = root
        self.root.title("Gestión de Contactos")

        # Crear formulario para añadir contactos
        self.formulario = tk.Frame(self.root)
        self.formulario.pack(padx=20, pady=20)

        tk.Label(self.formulario, text="Nombre:").grid(row=0, column=0)
        self.nombre_entry = tk.Entry(self.formulario)
        self.nombre_entry.grid(row=0, column=1)

        tk.Label(self.formulario, text="Teléfono:").grid(row=1, column=0)
        self.telefono_entry = tk.Entry(self.formulario)
        self.telefono_entry.grid(row=1, column=1)

        tk.Label(self.formulario, text="Email:").grid(row=2, column=0)
        self.email_entry = tk.Entry(self.formulario)
        self.email_entry.grid(row=2, column=1)

        tk.Button(self.formulario, text="Añadir contacto", command=self.añadir_contacto).grid(row=3, column=0, columnspan=2)

        # Crear lista de contactos
        self.lista_contactos = tk.Listbox(self.root)
        self.lista_contactos.pack(padx=20, pady=20)

    def añadir_contacto(self):
        nombre = self.nombre_entry.get()
        telefono = self.telefono_entry.get()
        email = self.email_entry.get()

        if nombre and telefono:
            conn = sqlite3.connect('contactos.db')
            cursor = conn.cursor()
            cursor.execute('INSERT INTO contactos (nombre, telefono, email) VALUES (?, ?, ?)', (nombre, telefono, email))
            conn.commit()
            conn.close()

            self.nombre_entry.delete(0, tk.END)
            self.telefono_entry.delete(0, tk.END)
            self.email_entry.delete(0, tk.END)

            self.cargar_contactos()
        else:
            messagebox.showerror("Error", "Por favor, introduce el nombre y el teléfono del contacto")

    def cargar_contactos(self):
        self.lista_contactos.delete(0, tk.END)

        conn = sqlite3.connect('contactos.db')
        cursor = conn.cursor()
        cursor.execute('SELECT * FROM contactos')
        contactos = cursor.fetchall()

        for contacto in contactos:
            self.lista_contactos.insert(tk.END, f'{contacto[1]} - {contacto[2]} - {contacto[3]}')

        conn.close()

if __name__ == "__main__":
    root = tk.Tk()
    app = ContactosApp(root)
    app.cargar_contactos()
    root.mainloop()

Guarda este script en un archivo llamado "app.py" y ejecútalo para iniciar la aplicación. Verás una ventana con un formulario para añadir contactos y una lista que mostrará los contactos añadidos.

En este tutorial, has aprendido a utilizar Python con SQLite y Tkinter para crear una aplicación de gestión de contactos. Puedes seguir mejorando esta aplicación añadiendo funcionalidades como la edición y eliminación de contactos, la búsqueda de contactos por nombre o teléfono, y la exportación de la lista de contactos a un archivo CSV. ¡Espero que este tutorial te haya sido útil y te haya inspirado a seguir explorando las posibilidades de Python en el desarrollo de aplicaciones!