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

news/2024/11/18 15:52:10/文章来源:https://www.cnblogs.com/suifeng2000/p/18374132

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 qrcodeimport 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 = rootself.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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/785457.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【工程应用十一】基于PatchMatch算法的图像修复研究(inpaint)。

这个东西是个非常古老的算法了,大概是2008年的东西,参考资料也有很多,不过基本上都是重复的。最近受一个朋友的需求,前后大概用了二十多天时间去研究,也有所成果,在这里简单的予以记录。图像修复这个东西目前流行的基本都是用深度学习来弄了,而且深度学习的效果还是非常…

jmeter基本操作

发送一个post请求 1、创建一个线程2、新建一个http请求编辑http请求的内容接口断言: 响应参数:{"code":"200","msg":"登录成功!","model":{}}查看结果:保存,运行 a、保存:b、运行红色表示错误 绿色表示成功 查看请求后…

Blazor开发框架Known-V2.0.9

V2.0.9 Known是基于Blazor的企业级快速开发框架,低代码,跨平台,开箱即用,一处代码,多处运行。本次版本主要是修复一些BUG和表格页面功能增强。官网:http://known.pumantech.com Gitee: https://gitee.com/known/Known Github:https://github.com/known/Known概述基于C#…

antd5版本修改Table组件滚动条样式

因为项目需求,要将Table组件的样式修改为UI图所给的效果,但是怎么写都不生效 最后发现在 .ant-table的样式中设了scrollbar-color,只要把这里的样式设为scrollbar-color: auto; 然后再改.ant-table-body里面滚动条的样式,就可以了.ant-table-body{&::-webkit-scrollbar…

ThinkPHP6同步千万级流水数据

ThinkPHP6定时任务同步千万级流水数据 多数据源配置 自定义指令 定时同步单次1000条 <?php declare (strict_types = 1);namespace app\command\SyncDtaTask;use think\console\Command; use think\console\Input; use think\console\Output; use think\Exception; use thi…

AtCoder Beginner Contest 047

A - Fighting over Candies 简单排序。 #include <bits/stdc++.h>using namespace std; using i64 = long long;int main() {ios::sync_with_stdio(false), cin.tie(nullptr);vector<int> a(3);cin >> a[0] >> a[1] >> a[2];sort(a.begin(), a.e…

CRTP 和静态多态

c++古典面试问题之一:面向对象编程三大特性--封装,继承,多态 c++古典面试问题之二:如何实现多态-- 当基类指针指向派生类对象,并通过这个指针调用在派生类中被重写的虚函数基于上述知识点,今天我们讲下另一种多态实现方式:CRTP (curiously recurring template pattern)虚…

小程序直传oss

直传使用 const host = <host>; const signature = <signatureString>; const ossAccessKeyId = <accessKey>; const policy = <policyBase64Str>; const key = <object name>; const securityToken = <x-oss-security-token>; const fi…

呼死你 手机轰炸机 (29021243

基于 短信轰炸机 原理研究并实现之后 又研究起了电话轰炸机 实现原理其实大同小异,最终的区别的 用户在进行短信发送 并未收到短信的情况下 【产生的原因有 网络信号原因、用户手机自动屏蔽原因】 可以利用第三方平台提供的语音验证码进行发送 这种情况也是通过fiddler进行抓包…

pygame物体碰撞

代码:#coding=utf-8import os,sys,re,time import pygame import random import math from win32api import GetSystemMetrics from tkinter import messageboxpygame.init() pygame.display.set_caption("我的游戏")percent = 0.6 screen_width = GetSystemMetrics…

NSSCTF [HNCTF 2022 Week1]Interesting_include

NSSCTF [HNCTF 2022 Week1]Interesting_include<?php //WEB手要懂得搜索 //flag in ./flag.phpif(isset($_GET[filter])){$file = $_GET[filter];if(!preg_match("/flag/i", $file)){die("error");}include($file); }else{highlight_file(__FILE__); }…

02-HTMLJS相关练习

1、使用 html 写一个网页,要求满足以下条件: (1)网页中含有任意一张图片,图片路径使用绝对路径(这里绝对路径无法识别故使用相对路径),鼠标悬停在图片时出现“马哥教育”文本,且点击图片可跳转至马哥教育官方页面 (2)网页中包含账号、密码登录,且账号提前定义好是 …