Генератор QR-кодов с использованием Python

PythonPythonIntermediate
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом проекте вас проведет по процессу создания генератора QR-кодов с использованием Python. Вы научитесь создавать проектный файл, импортировать необходимые библиотеки, определять функцию генерации QR-кода, определять функцию сохранения QR-кода, создавать главное окно и элементы для интерфейса генератора QR-кодов, а также выполнять главную функцию.

👀 Предварительный просмотр

Предварительный просмотр интерфейса генератора QR-кодов

🎯 Задачи

В этом проекте вы научитесь:

  • Создавать генератор QR-кодов с использованием Python
  • Импортировать библиотеки, такие как qrcode, tkinter и PIL
  • Определять функции для генерации и сохранения QR-кодов
  • Создавать пользовательский интерфейс для генерации и сохранения QR-кодов

🏆 Достижения

После завершения этого проекта вы сможете:

  • Использовать библиотеку qrcode для генерации QR-кодов
  • Использовать библиотеку tkinter для создания графического пользовательского интерфейса
  • Сохранять сгенерированные QR-коды в файлы
  • Отображать сгенерированные QR-коды на холсте
Это Guided Lab, который предоставляет пошаговые инструкции, чтобы помочь вам учиться и практиковаться. Внимательно следуйте инструкциям, чтобы выполнить каждый шаг и получить практический опыт. Исторические данные показывают, что это лабораторная работа уровня средний с процентом завершения 72%. Он получил 100% положительных отзывов от учащихся.

Создайте проектные файлы

Для начала создайте новый файл с именем qr_code_generator.py и откройте его в предпочитаемом редакторе кода.

cd ~/project
touch qr_code_generator.py
✨ Проверить решение и практиковаться

Импортируйте необходимые библиотеки

В файле qr_code_generator.py импортируйте следующие библиотеки в начале кода:

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

Установите необходимые библиотеки с помощью следующей команды:

pip3 install qrcode pillow
✨ Проверить решение и практиковаться

Определите функцию генерации QR-кода

Добавьте следующий код, чтобы определить функцию с именем generate_qr, которая принимает параметр text и генерирует изображение 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

Выше мы используем библиотеку qrcode для генерации изображения QR-кода. Функция generate_qr принимает параметр text, который представляет собой текст или URL, который будет содержаться в QR-коде. Затем функция создает объект QR-кода с указанной версией, уровнем исправления ошибок, размером ячейки и границей. Затем текст добавляется в объект QR-кода, и изображение QR-кода генерируется и сохраняется в файл с именем qr_code.png. Наконец, функция возвращает имя файла сгенерированного изображения QR-кода.

✨ Проверить решение и практиковаться

Определите функцию сохранения QR-кода

Далее добавьте следующий код, чтобы определить функцию с именем save_qr, которая позволяет пользователю сохранять сгенерированный QR-код:

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

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

Функция принимает параметр filename, который представляет собой имя файла сгенерированного изображения QR-кода. Затем функция открывает диалоговое окно для выбора файла, которое позволяет пользователю выбрать расположение и имя файла для сохранения изображения QR-кода. Если пользователь выбирает расположение и имя файла, функция переименовывает сгенерированное изображение QR-кода в выбранное имя файла и отображает диалоговое окно с сообщением для уведомления пользователя о том, что QR-код сохранен.

✨ Проверить решение и практиковаться

Создайте главное окно и элементы

Теперь добавьте следующий код, чтобы определить функцию с именем create_window, которая создает главное окно, метки, поле ввода, холст и кнопки, необходимые для интерфейса генератора 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()

Мы используем библиотеку tkinter для создания главного окна, меток, поля ввода, холста и кнопок. Функция create_window создает главное окно и добавляет метку и поле ввода для пользователя, чтобы он мог ввести текст или URL, который будет содержаться в QR-коде. Функция также создает холст, который будет использоваться для отображения сгенерированного изображения QR-кода. Затем функция определяет вложенную функцию с именем generate_and_display, которая получает текст из поля ввода, генерирует изображение QR-кода и отображает его на холсте. Функция также создает кнопку, которая позволяет пользователю сохранить сгенерированное изображение QR-кода. Наконец, функция создает кнопку, которая вызывает функцию generate_and_display при нажатии.

✨ Проверить решение и практиковаться

Выполните главную функцию

Наконец, добавьте следующий код, чтобы выполнить функцию create_window при запуске файла:

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

Блок if __name__ == '__main__' гарантирует, что функция create_window выполняется только при запуске файла, а не при импортировании его как модуля. Блок также вызывает функцию generate_qr для генерации изображения QR-кода с текстом "Hello World!".

python qr_code_generator.py
QR code generation output
✨ Проверить решение и практиковаться

Резюме

Вы успешно создали генератор QR-кодов с использованием Python. Следуя этому пошаговому проекту, вы узнали, как создать проектный файл, импортировать необходимые библиотеки, определить функции для генерации и сохранения QR-кодов, создать пользовательский интерфейс с использованием Tkinter и запустить проект для генерации и отображения QR-кодов.