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

🎯 Tareas
En este proyecto, aprenderás:
- Cómo crear un generador de códigos QR utilizando Python
- Cómo importar bibliotecas como
qrcode,tkinteryPIL - 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
qrcodepara generar códigos QR - Utilizar la biblioteca
tkinterpara 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
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
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.
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.
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.
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

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.



