首页 > 解决方案 > 如何在 tkinter 应用程序中创建打印对话框

问题描述

有没有办法从tkinter/Python 3.9调用标准的 Windows 打印对话框?我目前实现此功能的方式是通过使用 PyQt5 的单独 Python 脚本(print_mgr)(例如,dialog = QtPrintSupport.QPrintDialog())。我将 print_mgr 脚本编译为 .exe,然后使用子进程函数调用 print_mgr,将要打印的文件 (file_name) 传递给它。print_mgr 显示打印对话框,用户可以选择打印机、选项/首选项/等,然后打印文件。

proc = subprocess.Popen([str(Path(sys.executable).parent) + '\\qrfe_print_mgr.exe', file_name])

这工作正常,但比我想要的要复杂一点。

有没有办法调用WIN32API调用来打开打印对话框?我已经研究过使用mshtml.dll并且实际上可以使其与以下内容一起使用:

import win32api

file='C:\\Users\\me\\Documents\\TestFiles\\print_test.text'
filepath = "C:\\windows\\system32\\mshtml.dll,PrintHTML " + '"' + file + '"'
win32api.ShellExecute(0, None, "rundll32.exe", filepath, None, 1)

但这是一个不受支持的解决方法,它会执行其他操作,例如在页面底部添加页码和 url。

或者,除了使用 WIN32API 调用之外,还有其他方法可以解决此问题。

所以我很好奇是否有人对这个问题有任何潜在的解决方案。

谢谢

标签: python-3.xtkinterwinapiprinting

解决方案


推荐阅读