使用Python制作二维码生成软件

需求背景:
在制造业工厂为了满足产品的追溯性要求,我们经常需要给零件做标记,内容包括:产品的料号,工单号,序号,原材料提供商等

传统的做法是制作固定格式的标签,使用手工标记。

传统的做法的缺点:字迹因人而异不易辨认,信息录入靠手工易出错浪费人力

使用本程序后可打印二维码标签,使用二维码扫码枪录入信息

软件基本功能:
使用本程序能生成并打印二维码标签,标签中嵌入tab键能够自动换行

软件需求:
win10 win8 win7 64位操作系统
python 3.6 以上
第三方库 win32print,win32ui,qrcode

硬件需求:

  标签打印机1.热敏便宜但是标签只能保存一年2.推荐全树脂碳带打印机
# -*- coding: utf-8 -*-
import sys
import qrcode
import os
import tkinter.ttk
from tkinter import *
import datetime
from PIL import ImageFont
from PIL import Image
from PIL import ImageDraw
from PIL import ImageWin
import win32print
import win32ui
from tkinter.messagebox import *def changeline(file_name,draw,im1):str=file_name.encode('GB2312').decode('latin-1')total_width=0duanluo = ""for char in str:   width=draw.textsize(char)[0]total_width+=widthif total_width>0.65*im1.size[0]:total_width= 0duanluo += "\n"duanluo += charreturn duanluo.encode('latin-1')def qrcreate(content,file_name): #生成二维码#path=os.getcwd()+"\picture"      if not os.path.exists("picture"):os.makedirs("picture")qr = qrcode.QRCode(version=4,error_correction=qrcode.constants.ERROR_CORRECT_H,box_size=2,border=25)qr.add_data(content)qr.make(fit=True)img = qr.make_image()img_file = os.getcwd()+"\picture\%s.png"%file_name#fontcn = ImageFont.truetype("C:\\WINDOWS\\Fonts\\Arial.TTF", 13, encoding="utf-8")  #从win10中调用字体但不支持中文fontcn = ImageFont.truetype("simhei.ttf", 13, encoding="utf-8")img.save(img_file)  #保存二维码在picture文件夹中im1=Image.open(img_file)draw = ImageDraw.Draw(im1)position=(im1.size[0]-90-draw.textsize(changeline(file_name,draw,im1))[0]/2)draw.text((position,130),changeline(file_name,draw,im1).decode('GB2312'),000,font=fontcn)im1.save(img_file)def printqrcode(content,file_name):  #打印函数HORZRES = 8VERTRES = 10LOGPIXELSX = 88LOGPIXELSY = 90PHYSICALWIDTH = 110PHYSICALHEIGHT = 111PHYSICALOFFSETX = 112PHYSICALOFFSETY = 113printer_name = win32print.GetDefaultPrinter ()file_name = os.getcwd()+"\picture\%s.png"%file_namehDC = win32ui.CreateDC ()hDC.CreatePrinterDC (printer_name)printable_area = hDC.GetDeviceCaps (HORZRES), hDC.GetDeviceCaps (VERTRES)printer_size = hDC.GetDeviceCaps (PHYSICALWIDTH), hDC.GetDeviceCaps (PHYSICALHEIGHT)printer_margins = hDC.GetDeviceCaps (PHYSICALOFFSETX), hDC.GetDeviceCaps (PHYSICALOFFSETY)bmp = Image.open (file_name)if bmp.size[0] > bmp.size[1]:bmp = bmp.rotate (0)ratios = [1.0 * printable_area[0] / bmp.size[0], 0.9 * printable_area[1] / bmp.size[1]]scale = min (ratios)hDC.StartDoc (file_name)hDC.StartPage ()dib = ImageWin.Dib (bmp)scaled_width, scaled_height = [int (scale * i) for i in bmp.size]x1 = int ((printer_size[0] - scaled_width)/2)y1 = int ((printer_size[1] - scaled_height))x2 = x1 + scaled_widthy2 = y1 + scaled_heightdib.draw (hDC.GetHandleOutput (), (x1, y1, x2, y2))hDC.EndPage ()hDC.EndDoc ()hDC.DeleteDC ()if __name__ =="__main__":root=Tk() #创建运用程序窗口root.resizable(0,0)root.title("送料信息打印")width = 400height = 320screenwidth = root.winfo_screenwidth()screenheight = root.winfo_screenheight()alignstr = '%dx%d+%d+%d' % (width, height, (screenwidth-width)/2, (screenheight-height)/2)root.geometry(alignstr)one = Label(root, text="Powered by Will  \n"+"2019-"+str(datetime.datetime.now().year), width=30, height=2, font=("Arial", 10))   #软件使用年随本机日期变动one.pack(side=BOTTOM)f1=LabelFrame(root,text="二维码QRcode",height=190,width=190,labelanchor="n")f1.pack(anchor="e",padx=10,pady=2)    #使用pack布局def loadpicture(pic):global photo         photo = PhotoImage(file=pic)  #图片for widget in f1.winfo_children():widget.destroy()theLabel = Label(f1,justify=LEFT,image=photo,compound=CENTER,fg="white")theLabel.pack()root.update()def printcode():machine=comboCNC.get()cast=comboCAST.get()castlot=entry_CASTlot.get()mo=entry_MO.get()if len(mo)!=9:showwarning('警告', "工单长度为9")os._exit()mos=entry_MOS.get()pn=entry_PN.get()if len(pn)!=8:showwarning('警告', "料号长度为8")os._exit()text=machine+chr(9)+mo+chr(9)+mos+chr(9)+cast+chr(9)+castlot+chr(9)+chr(9)+pn   #二维码内容二维码中嵌入tab键chr(9),便于后续应用file=machine+mo+mos+cast+castlot+pn #文件名listbox.insert(0,"正在打印:"+file)print(file)pic = os.getcwd()+"\picture\%s.png"%file #文件名qrcreate(text,file)      #根据二维码内容生成二维码  loadpicture(pic)         #调用图片printqrcode(text,file)   #调用打印函数var_M=["M001","M002","M003","M004"]var_CAST=["A供应商","B供应商","C供应商"]var_CASTlot=tkinter.StringVar()var_MO=tkinter.StringVar()var_MOS=tkinter.StringVar()var_PN=tkinter.StringVar()comboCNC=tkinter.ttk.Combobox(root,value=tuple(var_M))comboCNC.place(x=100,y=10,width=100,height=20)comboCAST=tkinter.ttk.Combobox(root,value=tuple(var_CAST))comboCAST.place(x=100,y=70,width=100,height=20)   label_CNC=tkinter.Label(root,text="机器CNC:",justify=tkinter.RIGHT)label_CNC.place(x=0,y=10,width=100,height=20)label_CAST=tkinter.Label(root,text="铸件供应商:",justify=tkinter.RIGHT)label_CAST.place(x=0,y=70,width=100,height=20)label_CASTlot=tkinter.Label(root,text="铸造批次:",justify=tkinter.RIGHT)label_CASTlot.place(x=0,y=100,width=100,height=20)label_MO=tkinter.Label(root,text="工单号:",justify=tkinter.RIGHT)label_MO.place(x=0,y=130,width=100,height=20)label_MOS=tkinter.Label(root,text="工单号模号:",justify=tkinter.RIGHT)label_MOS.place(x=0,y=160,width=100,height=20)label_PN=tkinter.Label(root,text="料号:",justify=tkinter.RIGHT)label_PN.place(x=0,y=190,width=100,height=20)entry_CASTlot=tkinter.Entry(root,textvariable=var_CASTlot)entry_CASTlot.place(x=100,y=100,width=100,height=20)entry_MO=tkinter.Entry(root,textvariable=var_MO)entry_MO.place(x=100,y=130,width=100,height=20)entry_MOS=tkinter.Entry(root,textvariable=var_MOS)entry_MOS.place(x=100,y=160,width=100,height=20)entry_PN=tkinter.Entry(root,textvariable=var_PN)entry_PN.place(x=100,y=190,width=100,height=20)listbox=Listbox(root)listbox.place(x=110,y=230,width=280,height=40)buttonDelete=Button(root,text="打印",command=printcode)  #按下打印按钮启动打印函数"printcode"buttonDelete.place(x=0,y=230,width=100,height=20)root.mainloop()

图片效果

图片:

使用Python制作二维码生成软件相关推荐

  1. Python的妙用,PyQt5+qrcode,Python制作二维码生成工具

    前言: 今天我们就利用PyQt5+qrcode制作一个简单的二维码生成工具吧.让我们愉快地开始吧~ 开发工具 Python版本:3.6.4 相关模块: PyQt5模块: qrcode模块: 以及一些P ...

  2. Python案例笔记 | 用python制作二维码

    基于Python3版本的学习. 要用python制作二维码,需用python第三方库:MyQR . 安装myqr模块 首先需要在cmd中用pip安装myqr模块. win + r 打开运行命令,输入& ...

  3. 二维码生成软件如何生成汉信码

    汉信码是我国自主研发,拥有独立知识产权的新型二维条码,汉信码可以表示多媒体,声音,图形,汉字,字母,数字等一切可以二进制化的信息,信息容量大:数字可支持 7829个数字,英文字符可支持4350个英文字 ...

  4. 初学python制作二维码以及最新感悟

    初学python制作二维码 一.安装Python 推荐百度经验链接. 二.安装pip模块 Python 3.4以后版本默认安装了pip,但是由于不是最新故需要升级,pip的升级命令为(开始->c ...

  5. Python制作二维码简易步骤

    附件 Python制作二维码简易步骤 ------------------------------------------- 附:Python制作二维码简易步骤 附:Python爬取整本小说 附:Py ...

  6. python制作二维码_利用Python制作二维码

    利用简单的Python代码制作二维码 友情链接:饿了么外卖大红包限时领取 一.制作工具 安装Python环境 + PyCharm编译器. 二.电脑系统 本人win10 + Python3.7.0 + ...

  7. python学习——二维码生成和识别

    二维码知识 在介绍二维码原理之前,先说下条形码 .条形码我们都见过,就是超市收银员结账的时候扫的那个东西.它是一种"一维码",竖直方向,条码是均匀的,信息只能在水平方向上存储,并且 ...

  8. python实现二维码识别软件_用 Python 生成 识别二维码

    说到二维码大家一定不陌生,可以说现在二维码几乎渗透到了我们生活的各个角落,举例来说吧,我们到超市商场购物时扫描二维码付款,我们出行时乘坐公交地铁扫描二维码进站,我们到菜鸟驿站取件时扫描二维码取件,如果 ...

  9. python制作二维码_基于Python生成个性二维码过程详解

    一.问题描述 通过调用MyQR模块来实现生成个人所需二维码. 安装: pip install myqr 二.代码实现 1.普通二维码 from MyQR import myqr # 普通二维码 myq ...

最新文章

  1. MYSQL实现ORDER BY LIMIT的方法以及优先队列(堆排序)
  2. Kaggle Days首次落地中国,日本团队拿下冠军
  3. BCH压力测试即将开始,你确定不来凑凑热闹?
  4. Wt::WTreeNode
  5. oracle 混合分区表,Oracle 19C Hybrid partitioned tables混合分区表
  6. 计算机网络延展-令牌环网
  7. Fedora 33 配置Samba 服务器
  8. BP反向传播算法推导
  9. Ubuntu切换桌面显示管理器
  10. 顺时针 逆时针打印矩阵 java
  11. 燕过留声:由 Activity 和 Fragment 的通信方法想到的【WIP】
  12. 简书 android底部导航,Android BottomNavigationView底部导航栏的使用
  13. dijkstra算法为什么不能计算负权重?
  14. 双向长短期记忆网络模型_一种基于双向长短期记忆网络的定位修正方法与流程...
  15. 微信公众号(二)每日推送详细教程(AI回复助手)
  16. 一个可以给文件添加备注信息的小工具
  17. Win7环境下opensuse13.1与SLED 11 sp3的硬盘安装
  18. Excel中的小技巧amp;大智慧
  19. PyTorch中的topk方法以及分类Top-K准确率的实现
  20. 西南交通大学算法与设计实验1.3

热门文章

  1. python + win32api,win32gui,win32con 写 exe 窗口的时候,怎么创建按钮呢?
  2. 2019年清华大学827电路原理考研经验分享
  3. 简报a4纸的html页面,简报模板
  4. vue中v-model详解
  5. Python试题和规范文档
  6. MySQL高级SQL语句(开端)
  7. VSCode 配置Java环境
  8. WIN10系统休眠文件与保留存储
  9. php医疗管理系统(医院患者就诊档案管理系统)源码
  10. SqlServer 修改数据库文件位置