You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Tkinter/Python调用Windows默认打印对话框?

在Tkinter中调用Windows默认打印对话框

可以通过pywin32库中的win32print和win32ui模块实现调用Windows原生打印对话框,以下是具体实现步骤和代码示例:

1. 安装依赖

先确保安装了pywin32库:

pip install pywin32

2. 实现代码示例

下面是结合Tkinter的完整示例,点击按钮即可唤起Windows默认打印对话框:

import tkinter as tk
import win32print
import win32ui

def show_windows_print_dialog():
    # 枚举系统所有本地及已连接的打印机
    printers = win32print.EnumPrinters(win32print.PRINTER_ENUM_LOCAL | win32print.PRINTER_ENUM_CONNECTIONS)
    printer_names = [printer[2] for printer in printers]
    
    # 创建Windows原生打印对话框实例
    pd = win32ui.CreatePrintDialog()
    # 设置默认打印机(可选操作)
    if printer_names:
        pd.SetDefaultPrinter(printer_names[0])
    
    # 显示对话框,用户点击确定返回1,取消返回0
    if pd.DoModal() == 1:
        # 获取用户选择的打印机信息
        printer_dc = pd.GetPrinterDC()
        printer_details = win32print.GetPrinter(printer_dc, 2)
        print("选中的打印机:", printer_details["pPrinterName"])
        # 此处可添加实际打印逻辑,比如打印文本、文件内容等

# 初始化Tkinter窗口
root = tk.Tk()
root.title("Windows打印对话框调用示例")

# 添加触发按钮
print_btn = tk.Button(root, text="打开打印对话框", command=show_windows_print_dialog)
print_btn.pack(pady=20)

root.mainloop()

关键代码说明

  • win32print.EnumPrinters:获取系统内所有可用打印机列表
  • win32ui.CreatePrintDialog():生成Windows原生样式的打印对话框
  • pd.DoModal():弹出对话框并等待用户操作,返回值用于判断用户选择
  • pd.GetPrinterDC():获取用户选中打印机的设备上下文,可用于后续执行打印任务

内容的提问来源于stack exchange,提问作者k1dlat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 22:45:57