python生成二维码

文章讲述了使用Python的myqr和qrcode库生成二维码时遇到的问题及解决方法。在myqr库无法处理多行数据后,作者转向使用qrcode库,成功生成了包含换行的数据二维码。然而,发现微信的“扫一扫”功能对短数据的显示存在异常,可能是个bug,而其他扫描工具表现正常。
摘要由CSDN通过智能技术生成

背景:将数据生成二维码。

实现:

1.最初使用myqr实现,

from MyQR import myqr #导入myqr模块
myqr.run("string")    #在需要生成的地方调用

但是需要打印的数据是多行数据,因此在打印的数据中有换行符。

在运行时报错,报错忘记截图。

2.后来使用qrcode,参考的文章为:PyQt制作二维码生成器_pyqt 二维码_努力变得更强!的博客-CSDN博客

import qrcode
def make_code(self,sn):
    print("生成二维码")
    qr = qrcode.QRCode(
         version=1,  # 版本号,越大生成的二维码越复杂,存储的信息越多。
         error_correction=qrcode.constants.ERROR_CORRECT_L,  # 控制纠错水平,L、M、Q、H,从左到右依次增加
         box_size=10,  # 设置每个方块二维码的像素
         border=4,  # 设置二维码的边界
    )
    sn = self.to_line(sn)
    qr.add_data(sn)  # 二维码中的信息
    qr.make(fit=True)  # 自动调节
    img = qr.make_image(fill_color="black", back_color="white")  # 设置二维码颜色
    # img.show()  # 展示生成的二维码
    img.save("qrcode.png")  # 保存生成的二维码

但是在运行时报错,AttributeError: 'module' object has no attribute 'QRCode'。原因:一个很低级的错误,只是在代码中import qrcode,但是并没有pip安装。安装qrcode后,运行成功。

经过测试,可以生成带有换行的二维码。生成的二维码扫描后可以数据是分行显示的。

但是有个很奇怪的现象,使用微信的“扫一扫”功能扫描生成的二维码,无论二维码本身是否含有换行符,只要是数据本身长度较短,则多行数据均在同一行中显示;只要是数据本身长度较长,则多行数据均分行显示。用微信扫码小程序扫描,均正常,应该是微信的一个bug。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值