首页 > 编程语言 >Python 实现批量数字二维码生成器

Python 实现批量数字二维码生成器

时间:2024-08-22 16:15:17浏览次数:13  
标签:about Python self 生成器 生成 start 二维码 root

Python 实现批量数字二维码生成器

创建时间:2024-08-09

一、背景

手动逐个生成特定格式和内容的二维码是一项繁琐且耗时的任务。虽然有写二维码工具也可以制作,但是往往有一些限制,为了能够高效、批量生成自定义二维码的需求,开发了这个基于 Python 的数字二维码生成器应用程序。

在实际场景中,比如一家电商企业,需要为大量的商品生成唯一的二维码,以便进行库存管理和销售追踪。又或者一个活动组织者,要为众多参与者快速生成带有特定编号的二维码入场券。

二、介绍

这段代码主要使用了 tkinter 库来创建图形用户界面(GUI),以及 qrcode 库来生成二维码。

代码会确保一个名为 codeFile 的文件夹存在,如果不存在则会自动创建。

QRCodeGeneratorApp 类中,通过设置窗口的标题、大小,以及添加各种组件,如输入起始数字的标签和输入框、输入生成二维码数量的标签和输入框、生成二维码的按钮和关于按钮,构建了一个直观且易于操作的界面。

在生成二维码的函数 generate_qrcodes 中,通过获取用户输入的起始数字和生成数量,然后根据这些信息进行循环生成二维码。每一个生成的二维码都包含了特定的数字数据,并将其保存到指定的文件夹中。

关于按钮则触发了 show_about_dialog 函数,展示了一个包含详细使用说明的顶级窗口。

例如,如果不设置 start_str ,起始数字为 1123456 ,生成数量为 2 ,那么生成的二维码内容和文件名称将是 11234561123457

再如,如果设置 start_strABC- ,起始数字为 1000 ,生成数量为 2 ,生成的二维码内容和文件名称则会是 ABC-1000ABC-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

标签:about,Python,self,生成器,生成,start,二维码,root
From: https://www.cnblogs.com/suifeng2000/p/18374132

相关文章

  • 【生日视频制作】教师节中秋节国庆节小蛮腰广州塔心形照片AE模板修改文字软件生成器教
    广州塔心形照片生日视频制作教程AE模板改字特效软件生成器素材怎么如何做的【生日视频制作】教师节中秋节国庆节小蛮腰广州塔心形照片AE模板修改文字软件生成器教程特效素材【AE模板】生日视频制作步骤:安装AE软件下载AE模板把AE模板导入AE软件修改图片或文字渲染出......
  • Python多环境管理神器pyenv+poetry
    pyenv是一个简单而强大的Python版本管理工具,可以在同一台机器上同时安装多个Python版本,并且可以根据应用程序或项目的需求进行快速切换。它的主要功能包括版本的安装、卸载、切换和全局默认版本的设置。 #pyenv工具下载安装:https://codeload.github.com/pyenv/pyenv/zip......
  • python 模块统计
    importos,reos模块是方便与操作系统相交互的模块例如os.listdir(path)列出指定目录的文件os.gitcaw()取得当前工作目录 importre调用正则表达式. 匹配除换行符外的任意字符\W匹配字母或数字\S匹配任意的空白符^匹配开头¥匹配结尾 importsyssys.exit(n)退......
  • 【python】PyQt5中的QFrame控件,控制图形的边框样式、阴影效果、形状等属性
    ✨✨欢迎大家来到景天科技苑✨✨......
  • python小白学习笔记(基于黑马程序员编写03)
    目录二十一、函数基础定义    1.解释:    2.为什么要用函数呢?    3.定义:二十二、函数参数    1.解释:    2.定义:二十三、函数返回值    1.解释:    2.定义:    思考:补充:None    1.解释 ......
  • python 接口实现类的
    定义接口实现classObjectAuth(ABC):@staticmethoddefdispatch(type):forsub_clsinObjectAuth.__subclasses__():ifsub_cls.__name__.lower().find(type.lower())>=0:returnsub_clsraiseException("没有......
  • Levenshtein,一个超强的 Python 库!
    更多Python学习内容:ipengtao.com大家好,今天为大家分享一个超强的Python库-Levenshtein。Github地址:https://github.com/ztane/python-Levenshtein/文本相似性在许多领域如自然语言处理、数据清洗和信息检索中都有广泛应用。Python-Levenshtein库提供了一种有效的方法来计算......
  • 身份证识别、护照OCR、python身份证四要素实名认证API
    翔云身份证实名认证与身份证识别接口让你的APP在众多竞品中脱颖而出,仅需一键上传,用户身份信息便能快速提取,精准核验,告别繁琐的手动输入与反复核验,简化身份验证流程,提升用户体验,现已被广泛应用于电商、在线教育、金融等各类生活服务类APP中。python身份证实名认证接口代码......
  • Python之可变对象及其引用、深拷贝和浅拷贝
    可变对象及其引用深拷贝和浅拷贝可变对象及其引用Python中,变量名关联有值时才存在,如x=5变量名没有关联到特定的类型,类型有关联的对象觉得变量创建后即与特定的Python对象相关联Python维护命名空间,其中改变名与变量关联。这种联系,称为“引用”,也就是变量名引用对象......
  • Python之列表解决实际问题案例(字谜、文件分析)
    字谜文件分析1.《葛底斯堡演说》的长度2、有多少个不同的单词字谜字谜通过重新安排单词里的字母,来组成新的单词或词组。例如,将cinema转换成另一个英语单词iceman。在这个例子中,将设计一个程序,检查两个词是否构成字谜。如何做到这一点?做法是找出两个字谜单词所共享......