Python 生成二維碼工具

yumo6661周前 (05-16)技术文章13

此代码借助 PyQt6 库开发出一个可视化的精美二维码生成器应用程序。下面将从代码结构、主要功能模块和关键代码逻辑这几个方面进行解读。


代码结构

代码定义了一个名为 QRCodeGenerator 的类,该类继承自 QWidget,属于 PyQt6 中的窗口部件基类。以下是这个类里的主要方法:


  • __init__:初始化窗口,设置标题、大小和位置,同时初始化用户界面和样式表。
  • style_sheet:定义应用程序的样式表,对界面元素的外观进行设置。
  • initUI:构建用户界面,涵盖输入框、下拉框、按钮和图像展示区域。
  • update_format:依据用户选择的编码格式,显示或隐藏动态 URL 输入框。
  • load_logo:开启文件选择对话框,让用户选择 Logo 图片,并在预览框中展示。
  • generate_qrcode:依据用户输入的内容和设置生成二维码,还能选择添加 Logo。
  • round_outer_border:对二维码的外框做圆角处理。
  • save_qrcode:打开文件保存对话框,将生成的二维码保存为图片文件。


主要功能模块

1. 用户界面初始化

在 initUI 方法里,创建了以下主要界面元素:


  • 输入区域:包含内容输入框、编码格式下拉框以及动态 URL 输入框。
  • 设置区域:有尺寸选择框、选择 Logo 按钮和 Logo 预览框。
  • 按钮区域:包含生成二维码按钮和保存二维码按钮。
  • 展示区域:用于显示生成的二维码。


2. 编码格式处理

在 update_format 方法中,依据用户选择的编码格式,对输入框的可见性进行调整。当选择 “DYNAMIC_URL” 时,显示动态 URL 输入框。


3. Logo 加载

load_logo 方法会打开文件选择对话框,允许用户选择 Logo 图片。选择完成后,将图片加载并缩放,然后在预览框中显示。


4. 二维码生成

generate_qrcode 方法会根据用户输入的内容和设置生成二维码,具体步骤如下:


  1. 验证输入内容是否为空。
  2. 依据编码格式对内容进行处理。
  3. 创建 qrcode.QRCode 对象,添加数据并生成二维码图片。
  4. 对二维码外框进行圆角处理。
  5. 若选择了 Logo,将其添加到二维码中心。
  6. 把生成的二维码图片显示在界面上。


5. 二维码保存

save_qrcode 方法会打开文件保存对话框,让用户选择保存路径和文件格式。保存成功后会弹出提示框。


关键代码逻辑

1. 样式表设置

python

def style_sheet(self):
    return """
        QWidget {
            background-color: #f9f9f9;
            font-family: "Segoe UI", sans-serif;
            font-size: 11pt;
            color: #333;
        }
        ...
    """


此方法定义了应用程序的样式表,对各个界面元素的外观进行设置,像背景颜色、字体、边框等。


2. 动态 URL 处理

python

if self.current_format == "DYNAMIC_URL":
    dynamic_url = self.dynamic_url_input.text().strip()
    if not dynamic_url:
        QMessageBox.warning(self, "警告", "请输入动态 URL")
        return
    content = f"https://your-dynamic-service.com/redirect?url={dynamic_url}"


当用户选择 “DYNAMIC_URL” 编码格式时,会要求用户输入动态 URL,并将其拼接到内容中。


3. 二维码外框圆角处理

python

def round_outer_border(self, qr_img, box_size):
    radius = 2 * box_size
    draw = ImageDraw.Draw(qr_img)
    width, height = qr_img.size
    draw.pieslice((0, 0, 2 * radius, 2 * radius), 180, 270, fill="white")
    ...
    return qr_img


此方法借助 ImageDraw 模块对二维码的外框进行圆角处理,增强视觉效果。


总结

该代码实现了一个功能完备的二维码生成器应用程序,拥有直观的用户界面和丰富的功能。通过 PyQt6 库实现界面设计,利用 qrcode 和 Pillow 库生成和处理二维码图片。

相关文章

Python常用函数整理

以下是Python中常用函数整理,涵盖内置函数、标准库及常用操作,按类别分类并附带示例说明:一、基础内置函数print()输出内容到控制台。pythonprint("Hello, World!...

Python语言的12个基础知识点小结

python编程中常用的12种基础知识总结:正则表达式替换,遍历目录方法,列表按列排序、去重、字典排序、字典、列表、字符串互转,时间对象操作,命令行参数解析(getopt),print 格式化输出,进...

Python 中限制浮点数为两位小数的方法

在 Python 编程里,我们常常会碰到需要把浮点数限制为两位小数的情况。无论是处理财务数据,还是输出需要特定精度的结果,掌握相关方法都很有必要。下面就为大家详细介绍几种实现这一目标的方法。方法一:使...

全国计算机等级考试二级Python易错真题详解-流程控制-单选题

流程控制(单选题)说明:本文中的题目,全都来自全国计算机等级考试二级Python语言程序设计考试的真题,且都为易错题。题干最后如有编号,则是 python123 平台上的题号,以方便学生查找和索引。在...

python基础函数

Python 函数是代码复用的核心工具,掌握基础函数的使用是编程的关键。以下是 Python 函数的系统总结,包含 内置函数 和 自定义函数 的详细用法,以及实际应用场景。一、Python 内置函数(...

Python第十节—常用的内置函数

Pyhton中有一些内置的常用函数,如果每个函数都需要大家定义,那么会很浪费时间,所有今天给大家讲一些Python中的一些内置函数,先讲一讲常用的数学函数取绝对值abs()取长度len()取最大值ma...