2016-01-21 41 views
0

我想通过使用python来更改打印机的托盘。我尝试使用下面的代码来检索有关打印机及其值的信息:在pywin32中使用DeviceCapabilities

import win32print 
x = win32print.DeviceCapabilities('Name of my printer', '192.168.x.x', DC_BINS) 
print (x) 

DC_BINS应该给我一个int序列。每个都属于不同的托盘。但是,当我尝试运行此程序时,程序说“DC_BINS”未定义。我究竟做错了什么?我对python相当陌生。

回答

0

代码更正:

import win32print 
import win32con 
x = win32print.DeviceCapabilities('Name of my printer', '192.168.x.x', win32con.DC_BINS) 
print (x) 

代码,列出了所有的打印机,本地和远程,和他们的能力:

import win32print 
from win32con import * 

DC_CONSTANTS = [ 
    DC_BINNAMES, DC_BINS, DC_COLLATE, DC_COLORDEVICE, DC_COPIES, DC_DRIVER, 
    DC_DUPLEX, DC_ENUMRESOLUTIONS, DC_EXTRA, DC_FIELDS, 
    DC_FILEDEPENDENCIES, DC_MAXEXTENT, DC_MEDIAREADY, DC_MEDIATYPENAMES, 
    DC_MEDIATYPES, DC_MINEXTENT, DC_ORIENTATION, DC_NUP, DC_PAPERNAMES, 
    DC_PAPERS, DC_PAPERSIZE, DC_PERSONALITY, DC_PRINTERMEM, DC_PRINTRATE, DC_PRINTRATEPPM, 
    DC_PRINTRATEUNIT, DC_SIZE, DC_STAPLE, DC_TRUETYPE, DC_VERSION, 
] 


def DC_INFO(constant): 
    for a_global in globals().keys(): 
     if a_global.startswith("DC_") and globals().get(a_global) == constant: 
      return a_global 
    return "DC_UNKONWN" 


for printer in win32print.EnumPrinters(win32print.PRINTER_ENUM_LOCAL | win32print.PRINTER_ENUM_CONNECTIONS): 
    print printer 
    for constant in DC_CONSTANTS: 
     try: 
      x = win32print.DeviceCapabilities(printer[2], '', constant) 
      print "\t", DC_INFO(constant), x 
     except: 
      pass 

我会建议使用的Python的IDE,好的IDE将迎来未知符号,并建议从哪里进口(如PyCharm)。