You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

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, QPrintDialogfrom PyQt5.QtGui import QTextDocumentfrom 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

火山引擎 最新活动