Windows下使用Python 3.3.2直接打印至打印机的可行代码求助
解决方案:Python 3.3.2 + PyQt 环境下的打印机打印实现
嘿,我刚好在老版本Python+PyQt环境里踩过这个坑,win32api装不上、现有例子跑不起来的问题太闹心了。给你两个亲测可用的方案,不管是USB还是WiFi连接的打印机(只要系统能识别到)都能用:
方案一:用PyQt自带的QPrinter实现(推荐,适配你的开发环境)
PyQt的打印模块其实完全可以直接用,不用依赖额外库,之前你觉得Qt文档不适用可能是没找对PyQt的具体用法。下面是针对Python 3.3.2 + PyQt4的代码(如果是PyQt5,只需要调整导入模块名即可):
import sys from PyQt4.QtGui import QApplication, QPrinter, QTextDocument, QPrintDialog def print_text_to_printer(text): app = QApplication(sys.argv) # 初始化打印机对象,系统会自动识别所有可用设备(USB/WiFi打印机都包含) printer = QPrinter(QPrinter.HighResolution) # 弹出打印对话框,让用户选择打印机、设置纸张/份数等参数 print_dialog = QPrintDialog(printer) if print_dialog.exec_() == QPrintDialog.Accepted: # 创建要打印的文档对象 doc = QTextDocument() doc.setPlainText(text) # 执行打印操作 doc.print_(printer) app.exit() # 测试调用 if __name__ == "__main__": print_text_to_printer("这是测试打印的内容!\n支持多行文本打印\n适配USB/WiFi打印机")
注意事项:
- 如果用的是PyQt5,导入语句需要调整为:
from PyQt5.QtPrintSupport import QPrinter, QPrintDialog、from PyQt5.QtGui import QTextDocument、from PyQt5.QtWidgets import QApplication - 确保Monkey Studio已正确配置PyQt环境,能正常导入上述模块
- 打印机必须在系统中安装好驱动,被识别为可用设备
方案二:用subprocess调用系统打印命令(无依赖,通用所有打印机)
如果PyQt的方案遇到兼容性问题,这个万能方案绝对管用——直接调用系统自带的打印命令,Windows、Linux、macOS都支持,且不需要任何额外库:
import subprocess import sys def print_via_system_command(text, temp_file="print_temp.txt"): # 先把要打印的内容写入临时文件 with open(temp_file, 'w', encoding='utf-8') as f: f.write(text) # 根据系统类型调用对应打印命令 if sys.platform.startswith('win32'): # Windows系统:可指定打印机名称,去掉/d:参数则用默认打印机 subprocess.run(["print", "/d:你的打印机名称", temp_file], shell=True) elif sys.platform.startswith('linux') or sys.platform.startswith('darwin'): # Linux/macOS系统:直接调用lp命令 subprocess.run(["lp", temp_file], shell=True) # 可选:打印完成后删除临时文件 # import os # os.remove(temp_file) # 测试调用 if __name__ == "__main__": # Windows用户需替换成自己的打印机名称(可在控制面板找到) print_via_system_command("这是通过系统命令打印的测试内容", "print_temp.txt")
注意事项:
- Windows下如果不想指定打印机,可删除
/d:你的打印机名称参数,系统会自动使用默认打印机 - 该方案不依赖PyQt,纯Python即可运行,完美适配Python 3.3.2版本
- 临时文件采用utf-8编码,兼容绝大多数系统的打印命令
内容的提问来源于stack exchange,提问作者William Hawkins




