Generador de Códigos QR con Python

PythonBeginner
Practicar Ahora

Introducción

Este proyecto te guiará a través del proceso de creación de un generador de códigos QR utilizando Python. Aprenderás cómo crear un archivo de proyecto, importar las bibliotecas necesarias, definir la función de generación de códigos QR, definir la función de guardado de códigos QR, crear la ventana principal y los elementos para la interfaz del generador de códigos QR, y ejecutar la función principal.

👀 Vista previa

Vista previa de la interfaz del generador de códigos QR

🎯 Tareas

En este proyecto, aprenderás:

  • Cómo crear un generador de códigos QR utilizando Python
  • Cómo importar bibliotecas como qrcode, tkinter y PIL
  • Cómo definir funciones para generar y guardar códigos QR
  • Cómo crear una interfaz de usuario para generar y guardar códigos QR

🏆 Logros

Después de completar este proyecto, podrás:

  • Utilizar la biblioteca qrcode para generar códigos QR
  • Utilizar la biblioteca tkinter para crear una interfaz gráfica de usuario
  • Guardar los códigos QR generados en archivos
  • Mostrar los códigos QR generados en un lienzo

Crear los archivos del proyecto

Para comenzar, crea un nuevo archivo llamado qr_code_generator.py y dile que lo abra en tu editor de código preferido.

cd ~/proyecto
touch qr_code_generator.py
✨ Revisar Solución y Practicar

Importar las bibliotecas necesarias

En el archivo qr_code_generator.py, importa las siguientes bibliotecas al principio de tu código:

import qrcode
import tkinter as tk
from tkinter import messagebox, filedialog
from PIL import ImageTk, Image
import os

Instala las bibliotecas necesarias utilizando el siguiente comando:

pip3 install qrcode pillow
✨ Revisar Solución y Practicar

Definir la función de generación de código QR

Agrega el siguiente código para definir una función llamada generate_qr, que toma un parámetro de texto y genera una imagen de código QR:

def generate_qr(text):
    qr = qrcode.QRCode(
        version=1,
        error_correction=qrcode.constants.ERROR_CORRECT_H,
        box_size=10,
        border=4,
    )
    qr.add_data(text)
    qr.make(fit=True)

    img = qr.make_image(fill='black', back_color='white')
    filename = 'qr_code.png'
    img.save(filename)
    return filename

Anteriormente, utilizamos la biblioteca qrcode para generar una imagen de código QR. La función generate_qr toma un parámetro de texto, que es el texto o URL que contendrá el código QR. Luego, la función crea un objeto de código QR con la versión, nivel de corrección de errores, tamaño de caja y borde especificados. A continuación, se agrega el texto al objeto de código QR, y se genera y guarda la imagen del código QR en un archivo llamado qr_code.png. Finalmente, la función devuelve el nombre de archivo de la imagen del código QR generada.

✨ Revisar Solución y Practicar

Definir la función de guardado del código QR

A continuación, agrega el siguiente código para definir una función llamada save_qr, que permite al usuario guardar el código QR generado:

def save_qr(filename):
    filepath = filedialog.asksaveasfilename(defaultextension='.png', filetypes=[('PNG Images', '*.png')])

    if filepath:
        os.rename(filename, filepath)
        messagebox.showinfo('QR Code Saved!')

La función toma un parámetro de nombre de archivo, que es el nombre de archivo de la imagen del código QR generado. Luego, la función abre un cuadro de diálogo de archivo, que permite al usuario seleccionar una ubicación y un nombre de archivo para guardar la imagen del código QR. Si el usuario selecciona una ubicación y un nombre de archivo, la función renombra la imagen del código QR generada al nombre de archivo seleccionado y muestra un cuadro de mensaje para informar al usuario de que el código QR ha sido guardado.

✨ Revisar Solución y Practicar

Crear la ventana principal y los elementos

Ahora, agrega el siguiente código para definir una función llamada create_window, que crea la ventana principal, etiquetas, campo de entrada, lienzo y botones necesarios para la interfaz del generador de códigos QR:

def create_window():
    window = tk.Tk()
    window.title('QR Code Generator')

    label = tk.Label(window, text='Enter the text/URL:')
    label.pack()

    ent = tk.Entry(window)
    ent.pack()

    canvas = tk.Canvas(window, width=200, height=200)
    canvas.pack()

    def generate_and_display():
        text = ent.get()
        filename = generate_qr(text)
        photo = ImageTk.PhotoImage(Image.open(filename))
        canvas.create_image(100, 100, image=photo)
        button2 = tk.Button(window, text='Save QR Code', command=lambda: save_qr(filename))
        button2.pack()
        window.mainloop()

    button = tk.Button(window, text='Generate QR Code', command=generate_and_display)
    button.pack()

    window.mainloop()

Utilizamos la biblioteca tkinter para crear la ventana principal, etiquetas, campo de entrada, lienzo y botones. La función create_window crea la ventana principal y agrega una etiqueta y un campo de entrada para que el usuario ingrese el texto o URL que contendrá el código QR. La función también crea un lienzo, que se utilizará para mostrar la imagen del código QR generado. Luego, la función define una función anidada llamada generate_and_display, que obtiene el texto del campo de entrada, genera una imagen de código QR y muestra la imagen del código QR en el lienzo. La función también crea un botón que permite al usuario guardar la imagen del código QR generado. Finalmente, la función crea un botón que llama a la función generate_and_display cuando se hace clic en él.

✨ Revisar Solución y Practicar

Ejecutar la función principal

Finalmente, agrega el siguiente código para ejecutar la función create_window cuando se ejecuta el archivo:

if __name__ == '__main__':
    create_window()
    generate_qr('Hello World!')

El bloque if __name__ == '__main__' asegura de que la función create_window solo se ejecute cuando se ejecuta el archivo, y no cuando se importa como un módulo. El bloque también llama a la función generate_qr para generar una imagen de código QR con el texto "¡Hola Mundo!".

python qr_code_generator.py
QR code generation output
✨ Revisar Solución y Practicar

Resumen

Has creado con éxito un generador de códigos QR utilizando Python. Siguiendo este proyecto paso a paso, has aprendido cómo crear un archivo de proyecto, importar las bibliotecas necesarias, definir funciones para la generación y guardado de códigos QR, crear una interfaz de usuario con Tkinter y ejecutar el proyecto para generar y mostrar códigos QR.