如何从IDLE中以彩色打印形式输出Python代码?

10

我已经搜索过答案,但相关的解决方案似乎只涉及在解释器中使用'print'。

我想知道是否有可能从IDLE中以彩色打印(纸质)Python代码?

我已经进入了IDLE的“文件 > 打印窗口”,但它似乎只会打印出黑白版本,并没有提示是否要进行彩色打印等。

编辑:

看起来这可能不可行,所以选择将代码复制到像SciTE这样的文本编辑器中,并从那里打印 - 就像默认的IDLE语法高亮一样。

6个回答

6
IDLE无法实现此功能,但您可以使用LaTeX以IDLE的颜色格式化脚本。 listings软件包支持python的类似IDLE的颜色着色,但它相当隐藏:您必须知道包含在listings手册中提到的“首选项文件”,但没有描述其功能。以下几乎是最简示例,将使您的脚本myscript.py成为IDLE颜色的彩色PDF。
\documentclass{article}

\usepackage{listings}
\input{listings-python.prf}  % defines the python-idle-code style
\usepackage{textcomp} % Needed for straight quotes                               

\lstset{
 basicstyle=\normalsize\ttfamily, % size of the fonts for the code               
 language={Python},style={python-idle-code},
 showstringspaces=false,
 tabsize=4,
 upquote=true,   % Requires textcomp                                             
}

\oddsidemargin=-0.5cm
\textwidth=7in  % This just fits 80 characters at 10pt                           

\begin{document}
\lstinputlisting{myscript.py}
\end{document}

您也可以在真正的LaTeX文档中包含代码片段。

可用性: 您至少需要listings版本1.5b(2013/08/26)。使用Texlive 2013的用户必须从CTAN下载它(例如使用命令行texlive managertlmgr)。它是TexLive 2016的一部分。

不幸的是,CTAN版本似乎仍然存在问题:偏好设置文件listings-python.prf位于软件包的文档文件夹中,而不是TeX可以找到它的tex/latex/listings位置。您需要手动移动它以使其包含起来。


IDLE可以使用扩展(Python模块,可以从编辑器本身运行,例如IDLE2HTML)来完成此操作,当运行时,这些扩展会接收有关编辑器窗口的数据。 - Edward
在TexLive 2016(目前的版本),文件listings-python.prf位于正确的位置(/texmf-dist/tex/latex/listings/listings-python.prf),LaTeX可以在不复制它的情况下找到它。 - Nicolás Ozimica
@alexis 这听起来很有前途,但我觉得需要更多的说明。当我下载列表包时,我得到了8个文件,但我应该把它们放在哪里?也许是在IDLE安装的特定文件夹中?然后,我是否可以直接将您的脚本剪切并粘贴到IDLE控制台中,它就能工作了吗?(除了我意识到我必须插入完整的路径位置和文件名,而不是您的“myscript.py”)。 - Waterman
@waterman,这不是这样运行的。我的回答展示了如何使用 LaTeX 这个文档格式化系统对你的代码进行格式化。IDLE 在其中没有任何作用。listings 包已经随着 texlive 发行版一起默认安装了。 - alexis
PS:listings中的颜色方案几乎完全匹配IDLE的颜色方案。 - alexis

3
使用名为IDLE2HTML.py的IDLE扩展程序(搜索此名称)。 这将使IDLE能够打印带有样式表颜色的HTML文件。 接着,将HTML文件保存为PDF格式(颜色仍会保留)。

2
最简单的方法是使用Notepad++打开“.py”文件,您可以在那里选择和修改设置和首选项(任何主题都可以用于Python代码),将Python文件导出为彩色PDF文件(使用PDF虚拟打印机)或直接打印它 :-)
或者,如果您正在使用VS code,那么只需安装(PrintCode)扩展程序,并在安装后执行以下操作:
  1. 打开VS Code并转到View
  2. 点击Command Palette
  3. 搜索“PrintCode
它将把Python文件导出为一个HTML文件,使用默认的互联网浏览器,您可以直接打印它或使用虚拟打印机,将您的Python文档打印成彩色的PDF。

2
一种好而简单的解决方案是使用 IDLE 的扩展程序 IDLE2HTML。该工具允许将编辑窗口(或交互式 shell)中的代码保存为带有 CSS 格式的 HTML 文件,其中包括颜色。之后,可以打印该文件(如所需),或者将其格式化的代码与其他程序(如文字处理器)一起使用。目前一个可靠的下载 Python 文件并查看一些说明的网站是 Python Package Index (PyPI) - 该页面是 https://pypi.python.org/pypi/IDLE2HTML 或内置于较新版本 Python 中的 pip 模块可以为您安装文件。
这种方法的一个有用优点是,它从IDLE中获取颜色格式,而不是花时间分析代码并使用存储的颜色(许多其他解决方案都这样做)。这意味着它使用实际的颜色方案,并且可以与不同的IDLE主题(如“IDLE Dark”)一起使用。这应该会减少使用的资源和代码长度。
此外,当前扩展(版本2.0)可能可以适应使用不同的文件格式来保存数据,因为它具有相当简单的代码。
关于它的工作原理的一些细节:
由于该工具是作为扩展运行的Python代码,因此它可以访问IDLE提供的一个特殊变量,该变量包含有关编辑器窗口的数据。idlelib Python扩展的extend.txt文件(运行编辑器)描述了名为editwin的此变量:
引用:
用单个参数`editwin'实例化一个IDLE扩展类,即EditorWindow实例。
它还包括一些其他有关扩展IDLE的文件,例如“config-main.def”和“config-extensions.def”。官方的Python文档有更多信息。
安装说明:
将 IDLE2HTML.py 复制到 Python 安装目录下的 "idlelib" 文件夹中。
将 "config-extensions.txt" 的内容附加到您的 "config-extensions.def" 文件中(也在 idlelib 文件夹中),然后重新启动 IDLE。 使用方法: 从 "选项" 菜单中选择 "另存为 HTML",然后在 FileDialog 窗口中指定文件名。HTML 文件会立即创建。 用于 Python 3.x 的代码调整:
目前,IDLE2HTML 扩展(版本 2.0)无法在 Python 3.x 中工作,直到对代码进行一个小改动,我在包含 IDLEX Python 模块的修复版本中找到了这个改动。 以下是文件比较截图,左侧为原始版本,右侧为修复后的 IDLEX 版本。

File comparison image described above.

描述:如果 Python 版本是 Python 3.x,则使用 import tkinter as Tkinter 而不是 import Tkinter,并使用 import tkinter.filedialog as tkFileDialog 而不是 import tkFileDialog。代码中使用了内置模块 "sys" 中的 sys.version 在 if/else 块中运行正确的代码。

在“安装说明”中提到了您需要“重新启动IDLE”。这是什么意思,如何执行? - Waterman
如果IDLE正在运行,那就退出它并以正常方式启动。重点在于IDLE在启动时加载扩展程序,因此添加扩展程序在下次运行IDLE之前没有任何效果。必须将扩展放置在每个已安装Python版本的idlelib目录中。 - Terry Jan Reedy

0
我曾经遇到同样的问题,我将py文件打开到Visual Studio Code中,然后简单地复制(Ctrl A / Ctrl C)并粘贴文本(Ctrl V)到Microsoft编辑器,如Word或RTF,甚至Outlook。颜色保留,包括打印时。请注意,为了避免在VS Code中设置夜间模式作为默认值,请转到“文件”->“首选项”->“颜色主题”,选择更适合打印的日间模式。

0

我经常使用这种方法处理大量的代码。 只需安装SciTE "https://www.scintilla.org/SciTEDownload.html" 复制并粘贴您的代码,然后打印出来。 我喜欢拿一些胶带和标记笔把所有的纸张贴在墙上,然后放些音乐。 愉快编码!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接