import win32print
import tkinter
from tkinter.messagebox import *
from tkinter import *
import tkinter.font as font
import re
from datetime import datetime
from win32con import WM_INPUTLANGCHANGEREQUEST
import ttkbootstrap
from ttkbootstrap import Style
from ttkbootstrap.constants import *
from tkinter import ttk
import win32ui
def main(): # 主窗体
def show_select():
print(f"select ={combo_text.get()}")
#temp_print_name="\\\\mxacitrixprint\\"
temp_print_name=combo_text.get()
print(f"temp_print_name={temp_print_name}")
data=text_lot.get("1.0","end")
print(f"data={data}")
hDC = win32ui.CreateDC()
try:
hDC.CreatePrinterDC(temp_print_name) # 缺省将使用默认打印机
except:
print(f"can't use printer name={temp_print_name}")
font2 = win32ui.CreateFont({'name': '宋体', 'height': 200})
hDC.SelectObject(font2)
hDC.StartDoc("title") # 新建打印任务设置名称
try:
hDC.StartPage() # 开始一个页面
except:
print("cant start the page")
hDC.TextOut(15,14,data)
hDC.EndPage() #关闭页面
hDC.EndDoc() #关闭任务
root=Tk()
style = Style()
style = Style(theme='journal')
# # #想要切换主题,修改theme值即可,有以下这么多的主题,自己尝试吧:['vista', 'classic', 'cyborg', 'journal', 'darkly', 'flatly', 'clam', 'alt', 'solar', 'minty', 'litera', 'united', 'xpnative', 'pulse', 'cosmo', 'lumen', 'yeti', 'superhero', 'winnative', 'sandstone', 'default']
TOP6 = style.master
font_1 = font.Font(family='微软雅黑', size=18, weight='bold')
root.geometry('900x600+500+260')
root.title('merge lot 信息管理')
temp_print_list=[]
for item in printers:
temp_loca=item[2].rfind("\\")
#temp_print_list.append(item[2][temp_loca+1:])
temp_print_list.append(item[2])
combo_text = StringVar()
combo1=ttk.Combobox(root,value=temp_print_list,width=40,textvariable=combo_text,font=font_1)
combo1.place(relx=0.25, rely=0.05)
combo1.current(0)
#b1.pack()
printer_label=Label(root,text='打印机列表:',font=font_1)
printer_label.place(relx=0.04, rely=0.01, relwidth=0.2, relheight=0.15)
print_content=Label(root,text='Lot信息:',font=font_1)
print_content.place(relx=0.04, rely=0.15, relwidth=0.2, relheight=0.1)
text_lot =Text(root, height=100, width=30,font=font_1)
text_lot.place(relx=0.02, rely=0.25, relwidth=0.95, relheight=0.6)
btn1=Button(root,text="打印",command=show_select,font=font_1)
btn1.place(relx=0.4, rely=0.9)
#print(f"select ={combo1.current()}")
root.mainloop()
if __name__=="__main__":
printers = win32print.EnumPrinters(5)
for item in printers:
#print(f"---{item}")
temp_loca=item[2].rfind("\\")
#print(f"---**{item[2][temp_loca+1:]}")
default_print=win32print.GetDefaultPrinter()
#win32print.SetDefaultPrinter("\\\\mxacitrixprint\\XALABEL180")
#default_print=win32print.GetDefaultPrinter()
#print(default_print)
#print("7777777777777777")
main() # 先进入主窗口