使用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
相关产品推荐
相关产品推荐

