背景:将数据生成二维码。
实现:
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。