肥仔教程网

SEO 优化与 Web 开发技术学习分享平台

Python 生成二維碼工具

此代码借助 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 库生成和处理二维码图片。

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言