写在前面
二维码的使用之处越来越多,普通的二维码,相信大家已经都司空见惯了,今天就带大家使用 Python
的 myqr
库,来制作些不一样的二维码。
制作二维码
安装myqr库
pip install -i https://pypi.douban.com/simple myqr 复制代码
安装之后可以使用 pip show myqr
命令来检查是否安装成功,成功的提示应该类似于下面这样。
myqr.run()参数详解
我们使用 myqr.run()
来生成二维码,先看一下它的参数含义。
参数 | 类型 | 简义 | 详细 |
words |
str | 链接/字符串 | 二维码指向的内容 |
version |
int | 二维码大小 | 边长参数,范围是1到40,默认边长是取决于你输入信息的长度和使用的纠错等级 |
level |
str | 纠错等级 | 二维码的纠错等级,范围是L、M、Q、H,H最高,默认纠错等级为H |
picture |
str | 二维码背景图片 | 将二维码图像与指定的图片相融合 |
colorized |
boolean | 颜色 | 指定产生的图片的颜色,True为彩色,False为黑白色。 |
contrast |
float | 对比度 | 以1.0为界限,值越小表示对比度越低,值越大表示对比度越高 |
brightness |
float | 亮度 | 以1.0为界限,值越小表示对比度越低,值越大表示亮度越高 |
save_name |
str | 输出文件名 | 默认输出文件名是“qrcode.png” |
save_dir |
str | 二维码存储位置 | 默认存储位置是当前目录 |
制作普通二维码
制作普通的二维码,只需要指定二维码指向的内容与保存的名称,其他参数均按照默认参数。
# 生成普通二维码 from MyQR import myqr myqr.run(words='http://weixin.qq.com/r/6h3Ty4DETt0xrcSo90j4', save_name='普通二维码.png') 复制代码
制作黑白背景二维码
如果只指定了背景图片,默认是黑白色的,效果如下。
myqr.run(words='http://weixin.qq.com/r/6h3Ty4DETt0xrcSo90j4', picture='bg.png', save_name='黑白背景二维码.png') 复制代码
制作彩色背景二维码
使用 colorized=True
来使背景的颜色改为彩色。
myqr.run(words='http://weixin.qq.com/r/6h3Ty4DETt0xrcSo90j4', picture='bg.png', colorized=True, save_name='彩色背景二维码.png') 复制代码
制作大边长二维码
之前的图片 version
默认为1,现在指定 version=20
,图片相对于之前看起来会变的更清晰。
# 调节二维码边长 myqr.run(words='http://weixin.qq.com/r/6h3Ty4DETt0xrcSo90j4', version=20, picture='bg.png', colorized=True, save_name='彩色背景二维码(大).png') 复制代码
制作动态二维码
这里制作一个大边长的动态二维码,要注意 gif 图片的大小(内存不是尺寸),图片太大,制作出的二维码动图速度会变慢。
# 动态二维码 myqr.run(words='http://weixin.qq.com/r/6h3Ty4DETt0xrcSo90j4', version=20, picture='bg.gif', colorized=True, save_name='彩色背景动态二维码(大).gif') 复制代码
解析二维码
这里再介绍一下解析二维码的一个库 zxing
,安装方式与文章开头 myqr
相似,使用是只需要指定路径参数,函数返回解析得到的二维码内容。
import zxing reader = zxing.BarCodeReader() barcode = reader.decode('C:/Users/pc/Desktop/图片/test.jpg') print(barcode.parsed) 复制代码
tkinter制作可视化界面
设置界面主题
创建主组件对象,并添加标题。
window = ThemedTk(theme="adapta", fonts=True, themebg=True) window.title('二维码生成器') 复制代码
自定义组件样式
根据自己的需要,添加自己喜欢的样式,这里我添加了两款 label
的样式。
label_style = ttk.Style() label_style.configure("one.TLabel", font=("微软雅黑", 16, 'bold'), foreground="red", background="yellow") label_style1 = ttk.Style() label_style1.configure("two.TLabel", font=("微软雅黑", 9), foreground="blue", background="yellow") 复制代码
添加输入框组件
输入框组件,主要负责接收输入的内容,使用 entry.get()
即可获取输入框中的内容。
# 填写二维码内容 label1 = ttk.Label(window, text=' 链接/字符串 ', style='two.TLabel') entry = ttk.Entry(window, width=30) 复制代码
添加下拉框组件
与输入框的功能相似,也是获取用户选择的内容,同样使用 combo.get()
获取用户输入的内容。
# 纠错级别 label3 = ttk.Label(window, text=' 纠错级别 ', style='two.TLabel') combo = AutocompleteCombobox(completevalues=['L 水平 7% 的字码可被修正', 'M 水平 15% 的字码可被修正', 'Q 水平 25% 的字码可被修正', 'H 水平 30% 的字码可被修正']) combo.insert('0', 'H 水平 30% 的字码可被修正') 复制代码
添加选择背景组件
点击按钮,弹出资源管理器来选择图片背景, entry
框显示选择后的路径,并接收选择的路径参数。
def selectFilePath(): global img_path # 选择文件path接收文件地址 img_path = Path(filedialog.askopenfilename(title='选择背景图片')) path1.set(img_path) # 选择背景图 path1 = tk.StringVar() entry2 = ttk.Entry(window, textvariable=path1, width=30) entry2.insert(0, '默认无') button1 = ttk.Button(window,width=10, text = "选择背景", command = selectFilePath) 复制代码
添加输出显示框组件
显示运行结果及报错等信息。
tree = ttk.Treeview(height=1, show=("tree", "headings")) 复制代码
成品如下:
源码打包
虽然之前的文章中已经介绍过很多次打包的方法,但为了新读者,还是再来简单讲解一下。 首先要确保已经安装 pyinstaller
,没有安装的可以先安装一下。
pip install -i https://pypi.douban.com/simple pyinstaller 复制代码
pyinstaller
使用时的常用参数含义:
-F:打包单个文件,产生一个文件用于部署(默认),如果代码都写在一个
.py
文件时使用,项目有多个文件时不要使用
pyinstaller -F xxx.py 复制代码
-D:打包多个文件,产生一个目录用于部署(默认),用于框架编写的代码打包
pyinstaller -D xxx.py(项目入口文件) 复制代码
--key=keys:使用
keys
进行加密打包
pyinstaller --key=123456 -F xxx.py 复制代码
-d:产生
debug
版本的可执行文件-p:用来添加程序所用到的包的所在位置,设置导入路径,可以用
;
( Linux 使用:
)分割来指定多个目录。-w:表示不用控制台窗口,使用 Windows 子系统执行,当程序启动的时候不会打开命令行(只对 Windows 有效)
-c:表示打开控制台窗口,使用控制台子系统执行,当程序启动的时候会打开命令行(默认)(只对 Windows 有效)
-i:将 file.ico 添加为可执行文件的资源,改变程序的图标(只对 Windows 系统有效)
安装完成后,新建一个文件夹,将源文件放到该文件夹下面,打开cmd
, cd 进入该文件夹下(重点),执行下面语句
生成的文件结构如下
exe
可执行文件在 dist
目录下