Python 生成二維碼工具

yumo6665个月前 (05-16)技术文章54

此代码借助 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语言的12个基础知识点小结

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

Python浮点数保留两位小数的方法

技术背景在Python编程中,经常会遇到需要将浮点数保留特定小数位数的情况,比如在处理货币、统计数据等场景。然而,由于浮点数在计算机中采用二进制表示,存在精度问题,导致直接使用round函数有时无法得...

深入剖析Python基本函数:从基础到进阶的完整指南

引言Python作为一门简洁高效的编程语言,其函数系统是支撑代码模块化的核心机制。掌握Python函数的使用方法不仅能提升代码的可读性和复用性,还能帮助开发者理解面向对象编程和函数式编程的精髓。本文将...

零基础入门 Python 内置函数:从基础到进阶的实用指南

一、基础操作函数:编程世界的“瑞士军刀”1. 输入输出的核心:print()与input()print():最常用的输出函数,支持多参数拼接与格式控制:print("Hello, Python...

8-Python内置函数

Python 提供了丰富的内置函数,这些函数可以直接使用而无需导入任何模块。以下是一些常用的内置函数及其示例:1-print()1-1-说明输出指定的信息到控制台。1-2-例子2-len()2-1-说...

一文学会Python中的运算规则!

目录一、基本赋值运算符二、数值运算函数三、数字类型的关系四、附小知识一、基本赋值运算符a +=b => a=a+ba -=b => a=a-ba *=b => a=a*ba /=b...