2017-09-04 81 views
0

我想在计算机上选择一个已安装的打印机并通过它进行打印,但是我的组合框不显示我机器上的打印机,而是在我的IDE中打印到我的终端。如何通过tkinter中的本地或网络打印机进行打印

已经阅读下面it.This我的代码后,在解决办this.Have试图到达此数天安装win32print模块:

from tkinter import * 
from tkinter import ttk 
import win32print 



def installed_printer(): 
    printers = win32print.EnumPrinters(2) 
     for p in printers: 
     return(p) 



def locprinter(): 
    pt = Toplevel() 
    pt.geometry("250x250") 
    pt.title("choose printer") 
    LABEL = Label(pt, text="select Printer").pack() 
    PRCOMBO = ttk.Combobox(pt, width=35, 
    textvariable=installed_printer).pack() 
    BUTTON = ttk.Button(pt, text="refresh", 
    command=installed_printer).pack() 


root = Tk() 
root.title("printer selection in tkinter") 
root.geometry("400x400") 


menubar = Menu(root) 
root.config(menu=menubar) 

file_menu = Menu(menubar) 
menubar.add_cascade(label="File", menu=file_menu) 
file_menu.add_command(label="printer", command=locprinter) 


LAB = Label(root, text="Comment") 
T2 = Text(root, width=40, height=10) 


def INFO(): 
print(T2.get("1.0", END)) 


Print_Button = Button(root, text ="Print", command = 
INFO).place(x=180,y=250) 

LAB.pack() 
T2.pack() 

root.mainloop() 

我怎样才能做到这一点,我想用tkinter框架在我的文本框中打印内容。

回答

0

这是你想要创建的吗?使用此代码,我将打印机列入组合框,将文本框中的内容放入tempfile,然后通过win32api和win32print python模块打印内容。它在我尝试过的3台电脑上工作。

from tkinter import * 
from tkinter import ttk 
import win32api 
import win32print 
import tempfile 



def installed_printer(): 
    printers = win32print.EnumPrinters(2) 
    for p in printers: 
     return(p) 

printerdef = '' 

def locprinter(): 
    pt = Toplevel() 
    pt.geometry("250x250") 
    pt.title("choose printer") 
    var1 = StringVar() 
    LABEL = Label(pt, text="select Printer").pack() 
    PRCOMBO = ttk.Combobox(pt, width=35,textvariable=var1) 
    print_list = [] 
    printers = list(win32print.EnumPrinters(2)) 
    for i in printers: 
     print_list.append(i[2]) 
    print(print_list) 
    # Put printers in combobox 
    PRCOMBO['values'] = print_list 
    PRCOMBO.pack() 
    def select(): 
     global printerdef 
     printerdef = PRCOMBO.get() 
     pt.destroy() 
    BUTTON = ttk.Button(pt, text="Done",command=select).pack() 

root = Tk() 
root.title("printer selection in tkinter") 
root.geometry("400x400") 


menubar = Menu(root) 
root.config(menu=menubar) 

file_menu = Menu(menubar) 
menubar.add_cascade(label="File", menu=file_menu) 
file_menu.add_command(label="printer", command=locprinter) 


LAB = Label(root, text="Comment") 
T2 = Text(root, width=40, height=10) 


def INFO(): 
    printText = T2.get("1.0", END) 
    print(printText) 
    print(printerdef) 
    filename = tempfile.mktemp(".txt") 
    open(filename, "w").write(printText) 
    # Bellow is call to print text from T2 textbox 
    win32api.ShellExecute(
     0, 
     "printto", 
     filename, 
     '"%s"' % win32print.GetDefaultPrinter(), 
     ".", 
     0 
    ) 


Print_Button = Button(root, text ="Print", command=INFO).place(x=180,y=250) 

LAB.pack() 
T2.pack() 

root.mainloop() 

编辑:下面的代码,这个错误 What I am getting as an error

+0

能否请你解释的差异,为什么你做这些改变的记录? – NatNgs

+0

使用上面的代码将安装的打印机输出到combox,但是当我输入内容并希望打印选定的prrinter不打印内容时,请评论您的代码。 –

+0

页面小到打印尝试使用较小的字体。 –

相关问题