疫情当下,如何制作一个这样的简单“绿码”呢?(当然不能当健康码用)
首先,你需要准备好这些python库,有些库python自带,如果没有可以pip install自行安装
import tkinter as tk from tkinter import ttk from PIL import ImageTk import qrcode
其次,需要用tk创建一个基础的界面
window = tk.Tk()
window.title('二维码生成器')
window.geometry('450x270')
然后,在界面中输入文字,并调整好位置
tk.Label(window, text='网址').place(x=20, y=20) tk.Label(window, text='颜色').place(x=20, y=60) tk.Label(window, text='版本').place(x=20, y=100) tk.Label(window, text='容错率').place(x=20, y=140) tk.Label(window, text='版本号支持: 1~5').place(x=20, y=170) tk.Label(window, text='容错率值: H->30%,Q->25%,M->15%,L->7%').place(x=20, y=190)
再者,在相应位置插入文本框
var_web = tk.StringVar()
entry_web = tk.Entry(window, textvariable=var_web, width=23)
entry_web.place(x=80, y=20)
var_color = tk.StringVar()
# 颜色设置采用下拉菜单
entry_color = ttk.Combobox(window, textvariable=var_color, width=20)
entry_color.pack()
entry_color["value"] = ("red", "blue", "black", "green") # 设置二维码颜色
entry_color.current(2)
entry_color.place(x=80, y=60)
var_version = tk.StringVar()
entry_version = tk.Entry(window, textvariable=var_version, width=23)
entry_version.place(x=80, y=100)
var_fault = tk.StringVar()
entry_fault = tk.Entry(window, textvariable=var_fault, width=23)
entry_fault.place(x=80, y=140)
最后 ,补齐主要函数以及按键
def create_qrcode():
qr = qrcode.QRCode(
version=var_version.get(),
error_correction=qrcode.constants.ERROR_CORRECT_H,
box_size=5,
border=1
)
if var_fault.get() == 'H' or var_fault.get() == 'h':
qr.error_correction = qrcode.constants.ERROR_CORRECT_H
if var_fault.get() == 'Q' or var_fault.get() == 'q':
qr.error_correction = qrcode.constants.ERROR_CORRECT_Q
if var_fault.get() == 'M' or var_fault.get() == 'm':
qr.error_correction = qrcode.constants.ERROR_CORRECT_M
if var_fault.get() == 'L' or var_fault.get() == 'l':
qr.error_correction = qrcode.constants.ERROR_CORRECT_L
qr.make(fit=True)
qr.add_data(f"{var_web.get()}")
img = qr.make_image(fill_color=f'{var_color.get()}', back_color='white')
img_p = ImageTk.PhotoImage(img)
igp = tk.Label(window, image=img_p, bg="black")
igp.img_p = img_p
igp.pack()
igp.place(x=260, y=10, width=180, height=180)
btn_create = tk.Button(window, text='创建二维码', command=create_qrcode, width=20)
btn_create.place(x=150, y=220)
window.mainloop()
拿我的博客试一试
二维码的版本有1~40,但太高的版本号图片更大,因为界面面积有限,所以只支持1~5号,过高的版本号无法在该界面正确表示,但也可以根据自己的需要设置界面大小来获取更高的版本号。



