python-3.x - 如何在 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 - Django FileField 不保存
- node.js - NodeJS os.networkInterfaces() 在 Browserify 包中返回 [Object object]
- sql - SQL 复制数据库
- c++ - 解析模板和范围后获取编译文件?
- jenkins - 触发一次特定的下游作业
- python - 使用 cartopy 和 Natural Earth 10m 数据检查地理坐标点是陆地还是海洋
- azure-iot-edge - 模块上没有收到云到设备的消息
- database - 哪个索引最适合 PostgreSQL inet 数据类型?
- html - 如何在 Html 和 Css 中使滑块响应
- asch-development - 为什么 `app.sdb.load('Account', senderId)` 返回一个对象?