千家信息网

Python怎么制作二维码生成器

发表于:2025-01-26 作者:千家信息网编辑
千家信息网最后更新 2025年01月26日,本篇内容主要讲解"Python怎么制作二维码生成器",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Python怎么制作二维码生成器"吧!准备这个二维码生成器
千家信息网最后更新 2025年01月26日Python怎么制作二维码生成器

本篇内容主要讲解"Python怎么制作二维码生成器",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Python怎么制作二维码生成器"吧!


准备

这个二维码生成器是由qrcode(生成二维码)库与tkinter(图形ui界面)组成的。首先先在命令行安装以下三个模块,分别是qrcode、image、pillow(PIL)。安装方式很简单。

pip install qrcodepip install imagepip install pillow

安装完整过后直接在py文件中导入以下模块和方法:

from tkinter import *from tkinter.filedialog import *from PIL import Image,ImageTkimport qrcode

具体步骤

1编写ui界面

导入模块后直接用tkinter模块编写ui界面。小编这里的ui界面为:

具体代码如下:

root = Tk()root.title("二维码生成器")root.geometry('600x400+400+100')button1 = Button(root,text = '选择图标',font = ('宋体',20),fg = 'green',bg = 'white',command = openfile)#设置按钮button2 = Button(root,text = '保存二维码',font = ('宋体',20),fg = 'green',bg = 'white',command = savefile)#设置按钮button1.place(x = 90,y = 330,width = 120,height = 50)#显示按钮button2.place(x = 385,y = 330,width = 150,height = 50)#显示按钮label1 = Label(root,text = '输入链接',font = ('宋体',20),fg = 'black',bg = 'white')#设置组件label1.place(x = 235,y = 5,width = 130,height = 50)entry1 = Entry(root,font = ('宋体',20))#设置输入框entry1.place(x = 50,y = 60,width = 510,height = 30)#显示组件canvas1 = Canvas(root,width = 300,height = 300,bg = "white")#创建画布canvas2 = Canvas(root,width = 300,height = 300,bg = "white")#创建画布canvas1.place(x = 50,y = 100,width = 200,height = 200)canvas2.place(x = 360,y = 100,width = 200,height = 200)button = Button(root,text = '生成',font = ('宋体',15),fg = 'black',bg = 'pink',command = creat)#设置按钮button.place(x = 280,y = 200,width = 50,height = 40)#显示按钮root.mainloop()

Tkinter的基础用法此公众号内有相关用法,可以搜索关键词tkinter阅读。

这里只简单说一下部分方法及参数的含义。

Button()方法为创建一个按钮组件,其中command为点击按钮绑定的事件(函数方法)。

place()为一种布局方式,参数x,y为相对ui界面的坐标,width和height为显示宽高。

Label()为显示文字组件,例如图3.1中的"输入链接"。

Entry()为输入框组件,这里用于接收链接。使用entry.get()获取其中的内容。

Canvas()为画布组件,这里用于展示图标和二维码。

font参数为字体。其中可以设置字体样式和大小。

2生成二维码

程序的ui界面就已经写好了,最后只需要完成按钮中的comman参数就好了。分别有三个方法。先来看选择图标。

def openfile():    global filename,image_name    filename = askopenfilename()    image_name = Image.open(filename)    image_name = image_name.resize((200, 200), Image.ANTIALIAS)#缩放图片    im_root = ImageTk.PhotoImage(image_name)  # 预设打开的图片    canvas1.create_image(100,100,image=im_root)  # 嵌入预设的图片    canvas1.place(x = 50,y = 100,width = 200,height = 200)    root.mainloop()

这里面只说一下askopenfilename(),这是tikinter模块中filedialog类的一个方法,返回的是你当前选择文件的路径。然后利用image模块将此图片打开并按照要求缩放,最终展示在画布上。

然后是生成函数:

def creat():    global img    qr = qrcode.QRCode(        version=2,        error_correction=qrcode.constants.ERROR_CORRECT_Q,        box_size=10,        border=1)    url = entry1.get()    qr.add_data(url)    qr.make(fit=True)    img = qr.make_image()    img = img.convert("RGBA")    icon = image_name    icon = icon.convert("RGBA")    imgWight, imgHeight = img.size    iconWight = int(imgWight / 3)    iconHeight = int(imgHeight / 3)    icon = icon.resize((iconWight, iconHeight), Image.ANTIALIAS)    posW = int((imgWight - iconWight) / 2)    posH = int((imgHeight - iconHeight) / 2)    img.paste(icon, (posW, posH), icon)    img1 = img.resize((200, 200), Image.ANTIALIAS)    im_root = ImageTk.PhotoImage(img1)  # 预设打开的图片    canvas2.create_image(100,100,image=im_root)  # 嵌入预设的图片    canvas2.place(x = 360,y = 100,width = 200,height = 200)    root.mainloop()

其中qr部分为二维码的配置。

version参数是从1到40,其控制QR码的大小的整数(最小的,版本1,是一个21×21矩阵)。设置为None并在使代码自动确定时使用fit参数。

error_correction参数控制用于QR码的误差校正。在qrcode 软件包中提供了以下四个常量:

ERROR_CORRECT_L

可以纠正大约7%或更少的错误。

ERROR_CORRECT_M(默认)

可以纠正大约15%或更少的错误。

ERROR_CORRECT_Q

可以纠正大约25%或更少的错误。

ERROR_CORRECT_H。

可以纠正大约30%或更少的错误。

box_size参数控制每个二维码格子中有多少个像素。

border参数控制边界应多少盒厚是(默认为4,这是最低根据规范)。

add_data()为二维码的链接,这里直接获取输入框中的内容。

然后后面的内容都为控制图标与二维码的相对大小和位置。以上这部分的参数均来自qrcode的官方文档。详情请到官网查看:https://pypi.org/project/qrcode/5.1/

该方法写好后输入链接,点击生成,就可以生成一个带图标的二维码了。

Python开发:编写ui界面,制作二维码生成器

最后是保存二维码:

def savefile():    pathname = asksaveasfilename(defaultextension = '.png',initialfile = '新的二维码.png')    img.save(pathname)

其中的asksavesfilename同样是返回文件保存的路径,后面两个参数依次是默认图片格式、默认文件名。最后点击保存二维码即可大功告成。

最后打开保存的文件夹,检查一下,发现成功生成了二维码。

Python开发:编写ui界面,制作二维码生成器

4完整代码

from tkinter import *from tkinter.filedialog import *from PIL import Image,ImageTkimport qrcodedef openfile():    global filename,image_name    filename = askopenfilename()    image_name = Image.open(filename)    image_name = image_name.resize((200, 200), Image.ANTIALIAS)#缩放图片    im_root = ImageTk.PhotoImage(image_name)  # 预设打开的图片    canvas1.create_image(100,100,image=im_root)  # 嵌入预设的图片    canvas1.place(x = 50,y = 100,width = 200,height = 200)    root.mainloop()def creat():    global img    qr = qrcode.QRCode(        version=2,        error_correction=qrcode.constants.ERROR_CORRECT_Q,        box_size=10,        border=1)    url = entry1.get()    qr.add_data(url)    qr.make(fit=True)    img = qr.make_image()    img = img.convert("RGBA")    icon = image_name    icon = icon.convert("RGBA")    imgWight, imgHeight = img.size    iconWight = int(imgWight / 3)    iconHeight = int(imgHeight / 3)    icon = icon.resize((iconWight, iconHeight), Image.ANTIALIAS)    posW = int((imgWight - iconWight) / 2)    posH = int((imgHeight - iconHeight) / 2)    img.paste(icon, (posW, posH), icon)    img1 = img.resize((200, 200), Image.ANTIALIAS)    im_root = ImageTk.PhotoImage(img1)  # 预设打开的图片    canvas2.create_image(100,100,image=im_root)  # 嵌入预设的图片    canvas2.place(x = 360,y = 100,width = 200,height = 200)    root.mainloop()def savefile():    pathname = asksaveasfilename(defaultextension = '.png',initialfile = '新的二维码.png')    img.save(pathname)root = Tk()root.title("二维码生成器")root.geometry('600x400+400+100')button1 = Button(root,text = '选择图标',font = ('宋体',20),fg = 'green',bg = 'white',command = openfile)#设置按钮button2 = Button(root,text = '保存二维码',font = ('宋体',20),fg = 'green',bg = 'white',command = savefile)#设置按钮button1.place(x = 90,y = 330,width = 120,height = 50)#显示按钮button2.place(x = 385,y = 330,width = 150,height = 50)#显示按钮label1 = Label(root,text = '输入链接',font = ('宋体',20),fg = 'black',bg = 'white')#设置组件label1.place(x = 235,y = 5,width = 130,height = 50)entry1 = Entry(root,font = ('宋体',20))#设置输入框entry1.place(x = 50,y = 60,width = 510,height = 30)#显示组件canvas1 = Canvas(root,width = 300,height = 300,bg = "white")#创建画布canvas2 = Canvas(root,width = 300,height = 300,bg = "white")#创建画布canvas1.place(x = 50,y = 100,width = 200,height = 200)canvas2.place(x = 360,y = 100,width = 200,height = 200)button = Button(root,text = '生成',font = ('宋体',15),fg = 'black',bg = 'pink',command = creat)#设置按钮button.place(x = 280,y = 200,width = 50,height = 40)#显示按钮root.mainloop()

最后你还可用小编之前分享过的关于Python文件打包的方法,将该程序打包成exe文件,方便自己和他人使用。

到此,相信大家对"Python怎么制作二维码生成器"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

二维 二维码 按钮 生成 图片 参数 宋体 方法 组件 输入 文件 生成器 图标 模块 画布 界面 链接 内容 控制 错误 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 网络安全技术学院风包包 退域需要连服务器吗 全世界最大的服务器生产商是 有必要用到云服务器吗 服务器运行revit会很快吗 王者进游戏显示服务器无响应 建筑物裂缝数据库 自动管理服务器的分页文件在哪 属于零售业的公司弄软件开发吗 代理服务器上网安全 你知道哪些网络安全法 软件开发技术总监要做什么 域控制器和服务器的区别 技术好的浪潮服务器哪里有 我的世界网易版点券最多服务器 开封大学计算机网络技术宿舍 多环境的服务器管理经验 阿里云网络安全专家 日本软件开发公司 广告软件开发商上市公司 余姚敏捷软件开发外包 得力标签机怎么导入数据库信息 MFC登录界面使用数据库 沈阳仓储物流软件开发 网易网盾网络安全 idea修改数据库性别 网络安全高中主题班会教案 服务器配置远程管理口 学软件开发后端 滴滴有哪些服务器
0