Python 实现批量数字二维码生成器
Python 实现批量数字二维码生成器
创建时间:2024-08-09
一、背景
手动逐个生成特定格式和内容的二维码是一项繁琐且耗时的任务。虽然有写二维码工具也可以制作,但是往往有一些限制,为了能够高效、批量生成自定义二维码的需求,开发了这个基于 Python 的数字二维码生成器应用程序。
在实际场景中,比如一家电商企业,需要为大量的商品生成唯一的二维码,以便进行库存管理和销售追踪。又或者一个活动组织者,要为众多参与者快速生成带有特定编号的二维码入场券。
二、介绍
这段代码主要使用了 tkinter
库来创建图形用户界面(GUI),以及 qrcode
库来生成二维码。
代码会确保一个名为 codeFile
的文件夹存在,如果不存在则会自动创建。
在 QRCodeGeneratorApp
类中,通过设置窗口的标题、大小,以及添加各种组件,如输入起始数字的标签和输入框、输入生成二维码数量的标签和输入框、生成二维码的按钮和关于按钮,构建了一个直观且易于操作的界面。
在生成二维码的函数 generate_qrcodes
中,通过获取用户输入的起始数字和生成数量,然后根据这些信息进行循环生成二维码。每一个生成的二维码都包含了特定的数字数据,并将其保存到指定的文件夹中。
关于按钮则触发了 show_about_dialog
函数,展示了一个包含详细使用说明的顶级窗口。
例如,如果不设置 start_str
,起始数字为 1123456
,生成数量为 2
,那么生成的二维码内容和文件名称将是 1123456
和 1123457
。
再如,如果设置 start_str
为 ABC-
,起始数字为 1000
,生成数量为 2
,生成的二维码内容和文件名称则会是 ABC-1000
和 ABC-1001
。
二维码生成器
这个应用程序用于批量生成二维码。
您可以输入起始数字和生成的数量来自定义二维码的内容和数量。
也可以在前面加上一些前缀,生成的数据也就是自己的文件名称。
例如1: 不设置 start_str
数字开始时 1123456
生成 2 个 : 那么生成的二维码内容和文件名称为 : 1123456 1123457
例如2: 在文件数据 start_str 设置一个 ABC-
然后数字开始为: 1000
生成 2 个 : 生成2个: 那么生成的二维码内容和文件名称为 : ABC-1000 ABC-1001
三、完整代码
import tkinter as tk
import qrcode
import os
# 确保 "codeFile" 文件夹存在,如果不存在则创建
output_folder = "codeFile"
os.makedirs(output_folder, exist_ok=True)
start_str = ''
# start_str = 'JZ+917' # 二维码数字前缀需要 默认为 ''
class QRCodeGeneratorApp:
def __init__(self, root):
self.root = root
self.root.title("数字二维码生成器")
# 设置窗口大小
self.root.geometry("400x200")
self.label = tk.Label(root, text="请输入起始数字:")
self.label.pack()
self.entry = tk.Entry(root)
self.entry.pack()
# 添加一个输入框来接受生成的二维码数量
self.quantity_label = tk.Label(root, text="生成的二维码数量:")
self.quantity_label.pack()
self.quantity_entry = tk.Entry(root)
self.quantity_entry.pack()
self.button = tk.Button(root, text="生成二维码", command=self.generate_qrcodes)
self.button.pack()
# 添加一个关于按钮
self.about_button = tk.Button(root, text="关于", command=self.show_about_dialog)
self.about_button.pack()
def generate_qrcodes(self):
start_number = int(self.entry.get())
quantity = int(self.quantity_entry.get()) # 获取生成的二维码数量
for i in range(quantity): # 根据输入的数量生成二维码
data = f"{start_str}{start_number + i}"
qr = qrcode.QRCode(
version=None, # 让qrcode库自动选择版本号
error_correction=qrcode.constants.ERROR_CORRECT_L,
box_size=10,
border=4,
)
qr.add_data(data)
qr.make(fit=True)
img = qr.make_image(fill_color="black", back_color="white")
# img.save(f"{start_number + i}.png") #
# 假设 img 是你的二维码图像对象,start_number 和 i 是你的索引变量 保存二维码到文件
img.save(os.path.join(output_folder, f"{start_str}{start_number + i}.png"))
self.label.config(text="二维码生成完成!")
def show_about_dialog(self):
about_text = """\
二维码生成器
这个应用程序用于批量生成二维码。
您可以输入起始数字和生成的数量来自定义二维码的内容和数量。
也可以在前面加上一些前缀,生成的数据也就是自己的文件名称。
例如1: 不设置 start_str
数字开始时 1123456
生成 2 个 : 那么生成的二维码内容和文件名称为 : 1123456 1123457
例如2: 在文件数据 start_str 设置一个 ABC-
然后数字开始为: 1000
生成 2 个 : 生成2个: 那么生成的二维码内容和文件名称为 : ABC-1000 ABC-1001
"""
# 创建一个新的顶级窗口来显示关于信息
about_window = tk.Toplevel(self.root)
about_window.title("关于")
# 创建一个文本框来显示关于信息
about_label = tk.Label(about_window, text=about_text, padx=20, pady=20)
about_label.pack()
if __name__ == "__main__":
root = tk.Tk()
app = QRCodeGeneratorApp(root)
root.mainloop()
3.1 效果
3.2 运行界面
四、程序位置
代码位置:
https://gitee.com/suifeng55549/automated-office.git
或者
蓝奏云:
https://wwsl.lanzoul.com/isF3M277hebe