【问题标题】:Python Can I Print to Printer using TkinterPython 我可以使用 Tkinter 打印到打印机吗
【发布时间】:2020-04-04 16:12:16
【问题描述】:

我正在使用 Tkinter 制作记事本,我希望能够将所记笔记打印到打印机上。我正在使用 Text 对象以允许用户写他的笔记。我找不到任何关于如何使用 Tkinter 打印到打印机,我想避免使用我知道有打印机支持的 ​​PyQT 或 win32api(由于复杂性和缺乏经验)。我计划仅在 Windows 上发布应用程序,所以我不需要它跨平台。

【问题讨论】:

  • Tkinter 与打印机无关。打印机接口从来都不是简单的,所以 PyQT/win32api 应该无关紧要
  • 如何轻松打印到打印机?有没有不复杂的 Python 库,可以通过打印窗口提示用户打印到打印机?

标签: python tkinter printing


【解决方案1】:

接受的事实:跨平台打印很难。

根据您使用的系统,将文本/文件发送到打印机的命令会有很大不同。

对于 Windows,您可能应该使用 Python win32print 模块,即使您说由于复杂性等原因不想使用它。 老实说,我认为尝试任何其他方式解决它最终都会变得更加复杂。

对于 Linux、Mac、Unix,您可以通过内置的 os.popen() 或 Python 中的新 subprocess 模块更直接地使用 LPR 将命令发送到系统打印机,但对于 Windows,我敢打赌你最好使用 win32print 模块。

提供跨平台打印功能始终是一个挑战,因为不同操作系统上的底层子系统存在差异。

基本方法

您需要分离代码的逻辑,以便根据底层操作系统,您的程序将选择正确的方法来执行您需要的打印功能。 我不知道有什么办法解决这个问题。

使用 Python win32 模块并不像您想象的那么复杂。

适用于 Windows

这可以通过模块 win32print 来完成, Documented nicely here

适用于 Linux、macOS、Unix

查看LPR commands 的用法,并将其与基本的 Python os.popen 调用或使用新的 Python subprocess module 结合使用

我知道您可能想要一种更“复制/粘贴友好”的方式,但是如果没有其余代码并且不知道您的应用的确切要求/规格,那将非常困难。

归根结底,您最终可能会为每个打印平台编写自定义代码,所以不妨先跳起来。

【讨论】:

  • 非常感谢您花时间解释 win32print 对我来说是最好的方法。我会考虑您的意见。
  • @RafD 没问题。至少使用 win32print 模块或多或少是从 Python 程序在 Windows 上打印的“默认”方式,而无需使用具有自己的打印/设备访问抽象实现(如 Qt)的框架,因为这需要相当多的“幕后”代码,用于将所需的系统调用包装成可从 Windows 生态系统外部管理的东西。
猜你喜欢
  • 1970-01-01
  • 2010-11-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-08
  • 2010-10-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多