PythonIDE Docs
中文
简体中文

qrcode

生成二维码图片(读取用 vision_helper)。

二维码生成:把文字或链接编码为 PNG 图片(CoreImage CIQRCodeGenerator)。

边界只负责生成,不从图片读取/扫描二维码。识别请用 vision_helperdetect_barcodes。无需权限,不联网。

#模块概览

说明
导入import qrcode
适合做什么分享链接、设备配对码、活动签到码
调用时机generate / save 放在按钮回调
推荐顺序准备文本 → save()generate() → 分享或相册展示
纠错等级L/M(默认)/Q/H,越高越抗污损、容量越小

#快速开始

生成 PNG 字节并保存到文件:

python
import os
import qrcode

out = os.path.join(os.path.expanduser("~/Documents"), "qr-preview.png")
png = qrcode.generate("https://pythonide.xin", size=512, correction="M")
print("字节数:", len(png))
path = qrcode.save("https://pythonide.xin", out, size=600)
print("已保存:", path)

#AppUI 示例

生成放进按钮回调;appui.Image 不直接显示文件路径,因此展示保存路径文本。

python
import appui
import os
import qrcode

state = appui.State(
    text="https://pythonide.xin",
    path="",
    size="512",
)


def make_qr():
    out = os.path.join(os.path.expanduser("~/Documents"), "qr-preview.png")
    size = int(state.size) if state.size.isdigit() else 512
    state.path = qrcode.save(state.text, out, size=size, correction="M")


def body():
    return appui.NavigationStack(
        appui.Form([
            appui.Section("内容", [
                appui.TextField("要编码的内容", text=state.text),
                appui.TextField("边长(像素)", text=state.size),
            ]),
            appui.Section("生成", [
                appui.Button("生成二维码", action=make_qr)
                .button_style("bordered_prominent"),
                appui.Text(
                    "已保存到:" + state.path if state.path else "尚未生成"
                ).foreground_color("secondaryLabel"),
            ], footer="生成后可用分享或相册查看 PNG。"),
        ]).navigation_title("二维码")
    )


appui.run(body, state=state)

#API 参考

#速查

API作用
generate(text, size=512, correction='M')返回 PNG bytes
generate_base64(text, size=512, correction='M')返回 Base64 PNG 字符串
save(text, path, size=512, correction='M')写入文件并返回路径
QRCodeError生成失败异常

#参数

参数说明
text要编码的字符串
size输出边长(像素),通常 64–4096
correctionL(7%) / M(15%) / Q(25%) / H(30%)
python
png = qrcode.generate("Hello", size=256, correction="H")
b64 = qrcode.generate_base64("Hello")
path = qrcode.save("Hello", "/path/qr.png")

#常见错误

错误写法后果修正
qrcode 扫描图片模块不支持读取vision_helper.detect_barcodes
文本过长编码失败缩短内容或降低纠错等级
appui.Image 显示文件路径显示不出来保存后用 share 或相册
保存到不可写路径QRCodeError改用 ~/Documents

#相关文档

文档用途
vision_helper从图片识别二维码/条码
share分享生成的 PNG

#预期效果

运行示例后,界面应出现文档描述的目标结果;若与预期不符,先看「失败路径」并按返回值或日志排查。