一.概述
最近在学习Python , 编写了一个能生成二维码和条形码的窗体。利用窗体上的输入Entrance,可以输入需要编码的原始数据,分别点击按钮可以生成二维码和条形码。分别点击窗体上的按钮,预览,打印,另存为就可以调用Windows上的画笔应用, 实现相对应的操作功能。生成的二维码可以使用手机读取信息, 条形码可以使用扫描枪读取内容。
以下是窗体的效果图片:
二.准备工作
1.使用pip install qrcode 安装 qrcode 模块,用该模块生成二维码图像文件;
2.使用pip install python-barcode[images]安装barcode 模块,用该模块生成条形码图像文件;
barcode模块支持EAN, 13.EAN 14,ISBN 13,CODE 128 等11种编码规则生成条形码。
三.窗体实现代码
Created on Tue Mar 10 11:26:46 2020
@author: guowen
"""
import os
import tkinter as tk
import qrcode
import barcode #导入Barcode 模块
from barcode.writer import ImageWriter
def gettingdata1(): #获取生成二维码的信息
a=entry1.get()
data=str(a)
return data
def makeQrCode(data): #生成二维码
qr=qrcode.QRCode(
version=1,
error_correction=qrcode.constants.ERROR_CORRECT_L,
box_size=10,
border=4)
qr.add_data(data)
qr.make(fit=True)
img=qr.make_image(fill_color='pink',back_color='green')
img.save(f'C:/python/QR Code image/{data}.jpg') #利用F字符数函数把生成的图像文件保存在指定目录下
img.show()
entry1.delete(0,tk.END)
def operation():
os.system('mspaint') #调用win 画笔APP实现图像预览,打印,另存为
def gettingdata2(): #获取生成条形码信息
a=entry1.get()
data=str(a)
return data
def gettingbarcode(data): #生成条形码
img=barcode.get('ean13',data,writer=ImageWriter()) # "ean13"此处可以输入不同的编码规则
img.save(f'C:/python/QR Code image/{data}')
#img.show()
entry1.delete(0,tk.END)
win=tk.Tk() #创建窗体
win.title('QR Code & Barcode')
win.geometry('600x400')
lab1=tk.Label(win,text='请输入信息',relief=tk.GROOVE)
lab1.place(relx=0.12,rely=0.1,relwidth=0.2,relheight=0.1)
entry1=tk.Entry(win) #输入信息
entry1.place(relx=0.45,rely=0.1,relwidth=0.5,relheight=0.1)
btn1=tk.Button(win,text='生成二维码',command=lambda:makeQrCode(gettingdata1()))
btn1.place(relx=0.12,rely=0.4,relwidth=0.33,relheight=0.1)
btn2=tk.Button(win,text='生成条形码',command=lambda:gettingbarcode(gettingdata2()))
btn2.place(relx=0.6,rely=0.4,relwidth=0.3,relheight=0.1)
btn3=tk.Button(win,text='预览',command=operation)
btn3.place(relx=0.12,rely=0.75,relwidth=0.2,relheight=0.1)
btn4=tk.Button(win,text='打印',command=operation)
btn4.place(relx=0.42,rely=0.75,relwidth=0.2,relheight=0.1)
btn5=tk.Button(win,text='另存为',command=operation)
btn5.place(relx=0.71,rely=0.75,relwidth=0.2,relheight=0.1)
win.mainloop()
四.编码图像效果图片
这是应用第一版,以后改进为可以批量生成二维码和条形码。
首次在CSDN写博客, 不当之处在所难免, 请大家指正。