介绍
本项目将指导你完成使用 Python 创建二维码生成器的过程。你将学习如何创建项目文件、导入所需库、定义二维码生成函数、定义二维码保存函数、创建二维码生成器界面的主窗口和元素,以及执行主函数。
👀 预览

🎯 任务
在本项目中,你将学习:
- 如何使用 Python 创建二维码生成器
- 如何导入
qrcode、tkinter和PIL等库 - 如何定义生成和保存二维码的函数
- 如何创建用于生成和保存二维码的用户界面
🏆 成果
完成本项目后,你将能够:
- 使用
qrcode库生成二维码 - 使用
tkinter库创建图形用户界面 - 将生成的二维码保存到文件
- 在画布上显示生成的二维码
创建项目文件
首先,创建一个名为 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
定义二维码生成函数
添加以下代码以定义一个名为 generate_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 库生成一个二维码图像。generate_qr 函数接受一个文本参数,该参数是二维码将包含的文本或 URL。然后,该函数使用指定的版本、纠错级别、方块大小和边框创建一个二维码对象。接着,将文本添加到二维码对象中,并生成二维码图像并保存到名为 qr_code.png 的文件中。最后,该函数返回生成的二维码图像的文件名。
定义二维码保存函数
接下来,添加以下代码以定义一个名为 save_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!')
该函数接受一个文件名参数,即生成的二维码图像的文件名。然后,该函数会打开一个文件对话框,允许用户选择保存二维码图像的位置和文件名。如果用户选择了一个位置和文件名,该函数会将生成的二维码图像重命名为所选的文件名,并显示一个消息框通知用户二维码已保存。
创建主窗口和元素
现在,添加以下代码来定义一个名为 create_window 的函数,该函数创建二维码生成器界面所需的主窗口、标签、输入字段、画布和按钮:
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。该函数还创建一个画布,用于显示生成的二维码图像。然后,该函数定义一个名为 generate_and_display 的嵌套函数,该函数从输入字段获取文本,生成二维码图像,并在画布上显示二维码图像。该函数还创建一个按钮,允许用户保存生成的二维码图像。最后,该函数创建一个按钮,点击时调用 generate_and_display 函数。
执行主函数
最后,添加以下代码,以便在运行文件时执行 create_window 函数:
if __name__ == '__main__':
create_window()
generate_qr('Hello World!')
if __name__ == '__main__' 代码块确保只有在运行文件时才执行 create_window 函数,而不是在作为模块导入时执行。该代码块还调用 generate_qr 函数来生成一个包含文本“Hello World!”的二维码图像。
python qr_code_generator.py

总结
你已经成功地使用 Python 创建了一个二维码生成器。通过完成这个循序渐进的项目,你学会了如何创建项目文件、导入必要的库、定义生成和保存二维码的函数、使用 Tkinter 创建用户界面,以及运行项目来生成和显示二维码。



