首页 > 其他分享 >17.pyhton驱动电脑安装的zebra打印机机通过ZPL指令打印

17.pyhton驱动电脑安装的zebra打印机机通过ZPL指令打印

时间:2023-08-03 09:57:24浏览次数:41  
标签:name 17 utk self 打印 pyhton zebra password root

  1 #encoding:utf-8
  2 
  3 from tkinter import *
  4 from tkinter import messagebox
  5 import win32print
  6 import time
  7 from tkinter import scrolledtext
  8 
  9 # 控制输入框只能输入数字且小于8位数
 10 def validate_op(input_text):
 11     if input_text.isdigit() or input_text == "":
 12         if len(input_text) <= 8:
 13             return True
 14     return False
 15 
 16 # 控制输入框只能输入数字且小于4位数
 17 def validate_password(input_text):
 18     if input_text.isdigit() or input_text == "":
 19         if len(input_text) <= 4:
 20             return True
 21     return False
 22 
 23 
 24 def get_printers():
 25     printers = win32print.EnumPrinters(win32print.PRINTER_ENUM_LOCAL | win32print.PRINTER_ENUM_CONNECTIONS)
 26     printer_list = []
 27     for printer in printers:
 28         printer_name = printer[2]
 29         printer_list.append(printer_name)
 30     return printer_list
 31 
 32 class Application(Frame):
 33     def __init__(self, master=None):
 34         super().__init__(master)
 35         self.master = master
 36         self.pack()
 37 
 38         self.createWidget()
 39 
 40     def createWidget(self):
 41         self.utk_l_title = Label(root,text="OBA RM LABEL 列印指令生成",bg="red",font=("Arial",16),width=30,height=2).pack()
 42         self.utk_l_DB = Label(root,text="请选择打印机:",font=("Arial",16)).place(x = 30,y = 70)
 43         #创建一个选择数据库下拉框
 46         PSHDB = ["请选择打印机"]
 47         # 调用函数获取打印机列表
 48         printer_list = get_printers()
 49         # 打印机列表打印输出
 50         for printer in printer_list:
 51             # print(printer)
 52             PSHDB.append(printer)
 53         self.PSHDBVariable = StringVar()
 54         self.PSHDBVariable.set(PSHDB[0])
 55         self.utk_o_DB = OptionMenu(root,self.PSHDBVariable, *PSHDB).place(x = 180,y = 70)
 56         #创建一个工号标签
 57         self.utk_l_op = Label(root,text="开始序号:",font=("Arial",16)).place(x = 30,y = 120)
 58         self.utk_l_op1 = Label(root, text="【年份+日期+0000】如 23080000", font=("Arial", 12)).place(x=290, y=125)
 59         #创建一个工号输入框
 60         # self.utk_e_op=Entry(root)
 61         self.utk_e_op = Entry(root, validate="key", validatecommand=(root.register(validate_op), '%P'))
 62         self.utk_e_op.place(x = 150,y = 125)
 63         self.utk_e_op.bind("<Return>", self.clear_entry)
 64         #创建一个密码标签
 65         self.utk_l_password = Label(root,text="打印数量:",font=("Arial",16)).place(x = 30,y = 170)
 66         self.utk_l_password1 = Label(root, text="【1~1000】", font=("Arial", 12)).place(x=290, y=170)
 67         #创建一个密码输入框
 68         self.utk_e_password = Entry(root, validate="key", validatecommand=(root.register(validate_password), '%P'))
 69         self.utk_e_password.place(x = 150,y = 175)
 70         self.utk_e_password.bind("<Return>", self.clear_entry)
 71         #创建一个登录按钮
 72         self.utk_b_login = Button(root,text="打印",font=("Arial",12),width=10,height=1)
 73         self.utk_b_login.place(x = 150,y = 210)
 74         self.utk_b_login["command"] = self.songhua
 75         #创建一个提示信息标签
 76         self.utk_l_info = Label(root,text="快乐工作,幸福生活!!!",font=("Arial",16))
 77         self.utk_l_info.place(x = 30,y = 250)
 78 
 79     def clear_entry(self, event):
 80         event.widget.delete(0, END)
 81 
 82     def songhua(self):
 83         """判断登录填写是否符合要求"""
 84         self.tnsName = self.PSHDBVariable.get().strip()
 85         self.name = self.utk_e_op.get().strip()
 86         self.password = self.utk_e_password.get().strip()
 87         if self.tnsName=="请选择打印机":
 88             messagebox.showwarning("警告", "必须选择打印机!!!")
 89         elif len(self.name)==0 and self.name=="":
 90             messagebox.showwarning("警告", "请输入开始序号")
 91         elif len(self.name)!=8:
 92             messagebox.showwarning("警告", "开始序号必须8位数")
 93         elif self.name.startswith('0'):
 94             messagebox.showwarning("警告", "输入的数不能以0开头")
 95         elif len(self.password)==0 and self.password=="":
 96             messagebox.showwarning("警告", "请输入打印数量")
 97         elif int(self.password) > 1000:
 98             messagebox.showwarning("警告", "打印数量必须在1~1000")
 99         elif int(self.password) < 0:
100             messagebox.showwarning("警告", "打印数量必须在1~1000")
101         else:
102             messagebox.showinfo("打印信息", "恭喜你,输入格式正确,"+self.tnsName+",开始序号:"+self.name+",打印数量是:"+self.password)
103             # self.linkOrcale(self.name,self.password,self.tnsName)
104             a = int(self.name)
105             b = ''
106             d = []
107             file = open('data.txt', 'w')
108             for i in range(int(self.password)):
109                 a +=1
110                 c = str(a)
111                 b = '^XA^FO158,170^A@N,35,33,MYRIAD_SET_BOLD_.FNT^FDRM0' + c + '^FS ^FO185,35^BXN,8,400,,,^FDRM0' + c + '^FS^PQ1^XZ'
112                 # print(b)
113                 d.append(b)
114                 file.write(b+'\n')
115             file.close()
116             # print(d)
117             print("数据已成功保存到文件 data.txt 中")
118 zpl_code = "^XA^FO50,50^A0N,50,50^FDHello, World!^FS^XZ" 119 selected_printer = win32print.OpenPrinter(self.tnsName) # 获取选择的打印机句柄 120 win32print.StartDocPrinter(selected_printer, 1, ("Print Job", None, None)) # 开始打印任务 121 win32print.StartPagePrinter(selected_printer) # 开始打印一页 122 win32print.WritePrinter(selected_printer, zpl_code.encode('utf-8')) # 发送ZPL代码到打印机 123 win32print.EndPagePrinter(selected_printer) # 结束打印一页 124 time.sleep(1) # 添加1秒的延迟 125 win32print.EndDocPrinter(selected_printer) # 结束打印任务 126 win32print.ClosePrinter(selected_printer) # 关闭打印机 127 128 129 if __name__ == "__main__": 130 root = Tk() 131 root.geometry("550x300+200+300") 132 root.title("Label打印小工具") 133 app = Application(master=root) 134 root.mainloop()

 

 

标签:name,17,utk,self,打印,pyhton,zebra,password,root
From: https://www.cnblogs.com/mxx520/p/17602457.html

相关文章

  • 177
    8-2久违地睡了十二个钟中午才去驾校,运气好,有得打学时下午练了一会儿车,s弯道差不多了,直角转弯还不行晚上打学时到八点左右,天完全黑了,第一次在夜间开车回家,是很不一样,得十分小心才行快到家的时候,到村口时,有一辆车一直在后面不紧不慢地跟着我,我猜出来又该是爸爸。回到家,果然是。......
  • 17.STL中unordered_map(hash_map)和map的区别,hash_map如何解决冲突以及扩容
    17.STL中unordered_map(hash_map)和map的区别,hash_map如何解决冲突以及扩容1.区别1.1需要引入的头文件不同map:#include<map>unordered_map:#include<unordered_map>1.2内部实现机理不同map:map内部实现了一个红黑树(红黑树是非严格平衡二叉搜索树,而AVL是严格平衡二......
  • AP5179 高端电流采样降压恒流驱动IC SOP8 LED车灯电源驱动
    产品描述AP5179是一款连续电感电流导通模式的降压恒流源,用于驱动一颗或多颗串联LED输入电压范围从5V到60V,输出电流最大可达2.0A。根据不同的输入电压和外部器件,可以驱动高达数十瓦的LED。内置功率开关,采用高端电流采样设置LED平均电流,通过DIM引脚可以接受模拟调光和很......
  • 17道经典考题,检验你的 Python 基本功
    Python是一门非常优美的语言,其简洁易用令人不得不感概人生苦短。在本文中,作者GauthamSanthosh带我们回顾了17个非常有用的Python技巧,例如查找、分割和合并列表等。这17个技巧都非常简单,但它们都很常用且能激发不一样的思路。人生苦短,为什么我要用Python?很多读者都知道Py......
  • 【简单】【175. 组合两个表】联结方式总结!
    【简单】【175.组合两个表】联结方式总结!(一)MySql必会在MySQL中,有几种常见的表连接方式,包括:(1)内连接(INNERJOIN)返回两个表中匹配的行。使用共同的键来连接两个表,并返回满足连接条件的行。语法如下:SELECT列名FROM表1INNERJOIN表2ON表1.列=表2.列;(2)左连接(LEFT......
  • UVA 12170
    从另一个网站上的我的博客里转的。感觉放在一起比较好。时间久远,而且是英文(流泪)。EasyClimbStep1If\(x_i,d\le100\).Thendefine\(dp_{i,j}\)astheminimumcostforthefirst\(i\)stacks,with\(j\)astheheightofthe\(i^{\tt{th}}\)stack.Then,theformu......
  • CF1702E 题解
    题意\(t\)组数据($1\let\le10^{4}$),每组数据给一个偶数\(n\)(\(2\len\le2\cdot10^{5}\)),有\(n\)个多米诺骨牌,每块多米诺骨牌包含两个整数\(a_{i}\)和\(b_{i}\)(\(1\lea_{i},b_{i}\len\)),要求把这\(n\)块多米诺骨牌分入两个集合使得每个集合中的数互不相同,每个......
  • centos7.9 部署elasticsearch 7.17.8 集群
    准备基本环境名称ip地址cpu内存es监听端口redis-65110.0.2.18c64G9200redis-65210.0.2.28c64G9200redis-65310.0.2.38c64G9200搭建集群10.0.2.1主机配置基本环境#更新hosts文件cat/etc/hosts10.0.2.1 es-node-110.0.2.2 es-node-21......
  • 2017年考研英语二作文真题
      Asisshownintheabovechart,from2013to2015boththenumberofvistorsandmuseumsinourcountryhasincreased.Whataccountsfortherapidgrowthofmuseumvisitors?Iguessthereareprimarilytworeasons.Ontheonehand,asoureconomyisth......
  • 亚马逊水基灭火器UL8测试报告ISO17025实验室办理
    在跨境电商平台上销售的境外电商,在美国市场中需要提供相关的安全规范报告。其中,美国相关部门要求,如果商家未能提交UL+(UnderwritersLaboratories)标准的检测报告,将会被责令停止销售。而为了在亚马逊、Temu等平台上进行上架销售水基灭火器,UL8测试报告是必不可少的。这份报告必须是由......