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

🎯 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,tkinteretPIL - 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
qrcodepour générer des codes QR - Utiliser la bibliothèque
tkinterpour 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
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
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.
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é.
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é.
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

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.



