python生成二维码

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

实现:

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。

你可能感兴趣的:(python,python,开发语言)