QR-Code-Generator mit Python

PythonBeginner
Jetzt üben

Einführung

Dieses Projekt führt Sie durch den Prozess der Erstellung eines QR-Code-Generators mit Python. Sie werden lernen, wie Sie eine Projektdatei erstellen, die erforderlichen Bibliotheken importieren, die Funktion zum Generieren von QR-Codes definieren, die Funktion zum Speichern von QR-Codes definieren, das Hauptfenster und die Elemente für die Schnittstelle des QR-Code-Generators erstellen und die Hauptfunktion ausführen.

👀 Vorschau

Vorschau der Schnittstelle des QR-Code-Generators

🎯 Aufgaben

In diesem Projekt werden Sie lernen:

  • Wie man einen QR-Code-Generator mit Python erstellt
  • Wie man Bibliotheken wie qrcode, tkinter und PIL importiert
  • Wie man Funktionen zum Generieren und Speichern von QR-Codes definiert
  • Wie man eine Benutzeroberfläche zum Generieren und Speichern von QR-Codes erstellt

🏆 Errungenschaften

Nach Abschluss dieses Projekts werden Sie in der Lage sein:

  • Die qrcode-Bibliothek zum Generieren von QR-Codes zu verwenden
  • Die tkinter-Bibliothek zum Erstellen einer grafischen Benutzeroberfläche zu verwenden
  • Generierte QR-Codes in Dateien zu speichern
  • Generierte QR-Codes auf einer Leinwand anzuzeigen

Erstelle die Projekt-Dateien

Beginnen Sie mit dem Erstellen einer neuen Datei namens qr_code_generator.py und öffnen Sie sie in Ihrem bevorzugten Code-Editor.

cd ~/project
touch qr_code_generator.py
✨ Lösung prüfen und üben

Importiere die erforderlichen Bibliotheken

In der Datei qr_code_generator.py importieren Sie am Anfang Ihres Codes die folgenden Bibliotheken:

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

Installieren Sie die erforderlichen Bibliotheken mit dem folgenden Befehl:

pip3 install qrcode pillow
✨ Lösung prüfen und üben

Definiere die QR-Code-Generierungsfunktion

Fügen Sie den folgenden Code hinzu, um eine Funktion namens generate_qr zu definieren, die einen Textparameter annimmt und ein QR-Code-Bild generiert:

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

Oben verwenden wir die qrcode-Bibliothek, um ein QR-Code-Bild zu generieren. Die generate_qr-Funktion nimmt einen Textparameter entgegen, der der Text oder die URL ist, die der QR-Code enthalten wird. Die Funktion erstellt dann ein QR-Code-Objekt mit der angegebenen Version, Fehlerkorrekturstufe, Boxgröße und Rahmen. Der Text wird dann zum QR-Code-Objekt hinzugefügt, und das QR-Code-Bild wird generiert und in eine Datei namens qr_code.png gespeichert. Schließlich gibt die Funktion den Dateinamen des generierten QR-Code-Bilds zurück.

✨ Lösung prüfen und üben

Definiere die QR-Code-Speicherfunktion

Als nächstes fügen Sie den folgenden Code hinzu, um eine Funktion namens save_qr zu definieren, die dem Benutzer ermöglicht, den generierten QR-Code zu speichern:

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

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

Die Funktion nimmt einen Dateinamenparameter entgegen, der der Dateiname des generierten QR-Code-Bilds ist. Die Funktion öffnet dann einen Dateiauswahldialog, der dem Benutzer ermöglicht, einen Speicherort und einen Dateinamen auszuwählen, um das QR-Code-Bild zu speichern. Wenn der Benutzer einen Speicherort und einen Dateinamen auswählt, benennt die Funktion das generierte QR-Code-Bild in den ausgewählten Dateinamen um und zeigt eine Meldungsbox an, um dem Benutzer mitzuteilen, dass der QR-Code gespeichert wurde.

✨ Lösung prüfen und üben

Erstelle das Hauptfenster und die Elemente

Jetzt fügen Sie den folgenden Code hinzu, um eine Funktion namens create_window zu definieren, die das Hauptfenster, die Labels, das Eingabefeld, die Leinwand und die Schaltflächen für die Schnittstelle des QR-Code-Generators erstellt:

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()

Wir verwenden die tkinter-Bibliothek, um das Hauptfenster, die Labels, das Eingabefeld, die Leinwand und die Schaltflächen zu erstellen. Die create_window-Funktion erstellt das Hauptfenster und fügt ein Label und ein Eingabefeld hinzu, um dem Benutzer den Text oder die URL einzugeben, die der QR-Code enthalten wird. Die Funktion erstellt auch eine Leinwand, die zum Anzeigen des generierten QR-Code-Bilds verwendet werden wird. Die Funktion definiert dann eine geschachtelte Funktion namens generate_and_display, die den Text aus dem Eingabefeld holt, ein QR-Code-Bild generiert und das QR-Code-Bild auf der Leinwand anzeigt. Die Funktion erstellt auch eine Schaltfläche, die dem Benutzer ermöglicht, das generierte QR-Code-Bild zu speichern. Schließlich erstellt die Funktion eine Schaltfläche, die die generate_and_display-Funktion aufruft, wenn sie angeklickt wird.

✨ Lösung prüfen und üben

Führe die Hauptfunktion aus

Schließlich fügen Sie den folgenden Code hinzu, um die create_window-Funktion auszuführen, wenn die Datei ausgeführt wird:

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

Der Block if __name__ == '__main__' stellt sicher, dass die create_window-Funktion nur dann ausgeführt wird, wenn die Datei ausgeführt wird, und nicht, wenn sie als Modul importiert wird. Der Block ruft auch die generate_qr-Funktion auf, um ein QR-Code-Bild mit dem Text "Hello World!" zu generieren.

python qr_code_generator.py
QR code generation output
✨ Lösung prüfen und üben

Zusammenfassung

Sie haben erfolgreich einen QR-Code-Generator mit Python erstellt. Indem Sie an diesem schrittweisen Projekt teilgenommen haben, haben Sie gelernt, wie Sie eine Projekt-Datei erstellen, die erforderlichen Bibliotheken importieren, Funktionen für die Generierung und das Speichern von QR-Codes definieren, eine Benutzeroberfläche mit Tkinter erstellen und das Projekt ausführen, um QR-Codes zu generieren und anzuzeigen.