You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用myqr与easygui生成二维码时出现NameError: name 'QRCreator' is not defined错误

解决NameError: name 'QRCreator' is not defined问题

嘿,这个错误其实很好定位——你代码里最后一行用到的QRCreator,Python根本不知道它是什么东西!结合你说代码来自《Linux Format》杂志,大概率是两种情况:要么杂志里的代码包含了一个自定义的QRCreator类你没抄全,要么就是把MyQR的正确调用方式写错了。

下面给你两种解决方案,按需选就行:

方案1:补全缺失的QRCreator封装类

杂志里的代码可能为了简化操作,自己封装了一个QRCreator类来包装MyQR的功能,但你没把这部分代码复制过来。你可以把这段补在现有代码的开头:

import myqr
import easygui

class QRCreator:
    def __init__(self, content, save_path='./', background_img=None, is_color=False):
        self.content = content
        self.save_path = save_path
        self.background = background_img
        self.colorized = is_color

    def create_qr(self):
        # 调用MyQR的核心生成逻辑
        _, _, qr_filename = myqr.run(
            self.content,
            picture=self.background,
            colorized=self.colorized,
            save_dir=self.save_path
        )
        easygui.msgbox(f"二维码已生成:{qr_filename}")

补完之后,再运行你原来的最后一行(比如QRCreator("你的内容").create_qr())就没问题了。

方案2:直接用MyQR的原生API替代

如果你不想折腾封装类,直接用MyQR的原生调用也能实现一模一样的功能。把报错的最后一行替换成类似这样的代码就行:

# 用easygui获取用户输入
qr_content = easygui.enterbox("请输入二维码要包含的内容:")
bg_img = easygui.fileopenbox("选择背景图片(可选,留空则生成普通二维码):")
save_dir = easygui.diropenbox("选择二维码保存目录:")

# 生成二维码
myqr.run(
    qr_content,
    picture=bg_img,
    colorized=True,  # 改成False就是黑白二维码
    save_dir=save_dir
)
easygui.msgbox("二维码生成完成!")

额外要检查的小细节

  • 先确保你已经装了依赖包:在终端里跑pip install easygui myqr,Python3环境下直接用这个命令就行。
  • 现有代码开头一定要有import easygui和import myqr,不然连这两个库都用不了。

总的来说,这个错误就是QRCreator没被定义导致的,要么补全封装类,要么改用原生调用,分分钟就能解决~

内容的提问来源于stack exchange,提问作者Nyle Cohen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 09:23:22