Générateur de codes QR avec Python

PythonBeginner
Pratiquer maintenant

Introduction

Ce projet vous guidera tout au long du processus de création d'un générateur de codes QR à l'aide de Python. Vous apprendrez à créer un fichier de projet, à importer les bibliothèques requises, à définir la fonction de génération de codes QR, à définir la fonction d'enregistrement des codes QR, à créer la fenêtre principale et les éléments pour l'interface du générateur de codes QR, et à exécuter la fonction principale.

👀 Aperçu

Aperçu de l'interface du générateur de codes QR

🎯 Tâches

Dans ce projet, vous apprendrez :

  • Comment créer un générateur de codes QR à l'aide de Python
  • Comment importer des bibliothèques telles que qrcode, tkinter et PIL
  • Comment définir des fonctions pour générer et enregistrer des codes QR
  • Comment créer une interface utilisateur pour générer et enregistrer des codes QR

🏆 Réalisations

Après avoir terminé ce projet, vous serez capable de :

  • Utiliser la bibliothèque qrcode pour générer des codes QR
  • Utiliser la bibliothèque tkinter pour créer une interface graphique utilisateur
  • Enregistrer les codes QR générés dans des fichiers
  • Afficher les codes QR générés sur un canevas

Créer les fichiers du projet

Pour commencer, créez un nouveau fichier nommé qr_code_generator.py et ouvrez-le dans votre éditeur de code préféré.

cd ~/projet
touch qr_code_generator.py
✨ Vérifier la solution et pratiquer

Importer les bibliothèques requises

Dans le fichier qr_code_generator.py, importez les bibliothèques suivantes au début de votre code :

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

Installez les bibliothèques requises à l'aide de la commande suivante :

pip3 install qrcode pillow
✨ Vérifier la solution et pratiquer

Définir la fonction de génération de codes QR

Ajoutez le code suivant pour définir une fonction nommée generate_qr qui prend un paramètre de texte et génère une image de code 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

Ci-dessus, nous utilisons la bibliothèque qrcode pour générer une image de code QR. La fonction generate_qr prend un paramètre de texte, qui est le texte ou l'URL que le code QR contiendra. La fonction crée ensuite un objet de code QR avec la version, le niveau de correction d'erreur, la taille de la case et la bordure spécifiés. Le texte est ensuite ajouté à l'objet de code QR, et l'image de code QR est générée et enregistrée dans un fichier nommé qr_code.png. Enfin, la fonction renvoie le nom de fichier de l'image de code QR générée.

✨ Vérifier la solution et pratiquer

Définir la fonction d'enregistrement des codes QR

Ensuite, ajoutez le code suivant pour définir une fonction nommée save_qr, qui permet à l'utilisateur d'enregistrer le code QR généré :

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 fonction prend un paramètre de nom de fichier, qui est le nom de fichier de l'image de code QR générée. La fonction ouvre ensuite une boîte de dialogue de fichier, qui permet à l'utilisateur de sélectionner un emplacement et un nom de fichier pour enregistrer l'image de code QR. Si l'utilisateur sélectionne un emplacement et un nom de fichier, la fonction renomme l'image de code QR générée avec le nom de fichier sélectionné et affiche une boîte de dialogue pour informer l'utilisateur que le code QR a été enregistré.

✨ Vérifier la solution et pratiquer

Créer la fenêtre principale et les éléments

Maintenant, ajoutez le code suivant pour définir une fonction nommée create_window, qui crée la fenêtre principale, les étiquettes, le champ de saisie, le canevas et les boutons nécessaires pour l'interface du générateur de codes 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()

Nous utilisons la bibliothèque tkinter pour créer la fenêtre principale, les étiquettes, le champ de saisie, le canevas et les boutons. La fonction create_window crée la fenêtre principale et ajoute une étiquette et un champ de saisie pour que l'utilisateur entre le texte ou l'URL que le code QR contiendra. La fonction crée également un canevas, qui sera utilisé pour afficher l'image du code QR généré. La fonction définit ensuite une fonction imbriquée nommée generate_and_display, qui obtient le texte du champ de saisie, génère une image de code QR et affiche l'image du code QR sur le canevas. La fonction crée également un bouton qui permet à l'utilisateur d'enregistrer l'image du code QR généré. Enfin, la fonction crée un bouton qui appelle la fonction generate_and_display lorsqu'il est cliqué.

✨ Vérifier la solution et pratiquer

Exécuter la fonction principale

Enfin, ajoutez le code suivant pour exécuter la fonction create_window lorsque le fichier est exécuté :

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

Le bloc if __name__ == '__main__' assure que la fonction create_window est exécutée uniquement lorsque le fichier est exécuté, et non lorsqu'il est importé en tant que module. Le bloc appelle également la fonction generate_qr pour générer une image de code QR avec le texte "Hello World!".

python qr_code_generator.py
QR code generation output
✨ Vérifier la solution et pratiquer

Résumé

Vous avez réussi à créer un générateur de codes QR avec Python. En suivant ce projet étape par étape, vous avez appris à créer un fichier de projet, importer les bibliothèques nécessaires, définir des fonctions pour la génération et l'enregistrement des codes QR, créer une interface utilisateur avec Tkinter et exécuter le projet pour générer et afficher des codes QR.