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

🎯 Задачи
В этом проекте вы научитесь:
- Создавать генератор QR-кодов с использованием Python
- Импортировать библиотеки, такие как
qrcode,tkinterиPIL - Определять функции для генерации и сохранения QR-кодов
- Создавать пользовательский интерфейс для генерации и сохранения QR-кодов
🏆 Достижения
После завершения этого проекта вы сможете:
- Использовать библиотеку
qrcodeдля генерации QR-кодов - Использовать библиотеку
tkinterдля создания графического пользовательского интерфейса - Сохранять сгенерированные QR-коды в файлы
- Отображать сгенерированные QR-коды на холсте
Создайте проектные файлы
Для начала создайте новый файл с именем 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-кодов с использованием Python. Следуя этому пошаговому проекту, вы узнали, как создать проектный файл, импортировать необходимые библиотеки, определить функции для генерации и сохранения QR-кодов, создать пользовательский интерфейс с использованием Tkinter и запустить проект для генерации и отображения QR-кодов.



