# 25.5. IDLE

源代码： Lib/idlelib/

IDLE 是 Python 的集成开发和学习环境。

IDLE 具有以下特性：

- 使用 `tkinter` GUI 工具包，100% 纯 Python 代码编写
- 跨平台：在 Windows，Unix 和 Mac OS X 上工作大致相同
- Python shell 窗口（交互式解释器），带有代码输入，输出和错误消息高亮显示
- 多窗口文本编辑器与多重撤消，Python 代码高亮，智能缩进，调用提示，自动完成和其他功能
- 在任何窗口中搜索，在编辑器窗口中替换，以及搜索多个文件（grep）
- 调试器具有持久断点的，步进和查看全局和本地命名空间
- 配置，浏览器和其他对话框

## 25.5.1. Menus

IDLE 有两种主窗口类型，Shell 窗口和编辑器窗口。可以同时有多个编辑器窗口。输出窗口，例如用于编辑/在文件中查找，是编辑窗口的子类型。它们当前具有与编辑器窗口相同的顶部菜单，但是具有不同的默认标题和上下文菜单。

IDLE 的菜单根据当前选择的窗口动态变化。下面列出的每个菜单指示与之相关联的窗口类型。

### 25.5.1.1. 文件菜单（外壳和编辑器）

新文件
  创建一个新的文件编辑窗口。
打开...
  使用打开对话框打开现有文件。
最近文件
  打开最近的文件列表。单击一个以打开它。
打开模块...
  打开现有模块（搜索 sys.path）。

类浏览器
  在树结构中显示当前编辑器文件中的函数，类和方法。在shell中，首先打开一个模块。
路径浏览器
  在树结构中显示sys.path目录，模块，函数，类和方法。
保存
  将当前窗口保存到关联文件（如果有）。自打开或上次保存以来已更改的Windows在窗口标题之前和之后都有*。如果没有相关联的文件，请另行另存为。
另存为...
  使用“另存为”对话框保存当前窗口。保存的文件将成为窗口的新关联文件。
另存为...
  将当前窗口保存到其他文件，而不更改关联的文件。
打印窗口
  将当前窗口打印到默认打印机。
关
  关闭当前窗口（如果未保存，请保存）。
出口
  关闭所有窗口并退出IDLE（要求保存未保存的窗口）。

### 25.5.1.2. 编辑菜单（外壳和编辑器）

撤消
  撤消当前窗口的最后一次更改。最多可以撤消1000次更改。
重做
  将最后一次撤消的更改重做到当前窗口。
剪切
  将选择内容复制到系统范围的剪贴板；然后删除选择。
复制
  将选择内容复制到系统范围的剪贴板。
粘贴
  将系统范围剪贴板的内容插入当前窗口。

剪贴板功能也可在上下文菜单中使用。

全选
  选择当前窗口的全部内容。
找...
  打开包含许多选项的搜索对话框
再次查找
  重复上一次搜索，如果有一个。
查找选择
  搜索当前选择的字符串（如果有）。
在文件中查找...
  打开文件搜索对话框。将结果放入新的输出窗口。
更换...
  打开搜索和替换对话框。
转到线
  将光标移动到请求的行号，并使该行可见。
显示完成
  打开一个可滚动的列表，允许选择关键字和属性。请参阅下面的提示部分中的完成。
展开Word
  展开您键入的前缀以匹配同一窗口中的完整字词；重复得到不同的展开。
显示通话提示
  在函数的未闭合括号后，打开一个带有函数参数hints的小窗口。
显示周围括号
  突出显示周围的括号。

### 25.5.1.3. 格式菜单（仅限编辑器窗口）

缩进区域
  将所选线向右移动缩进宽度（默认为4个空格）。
Dedent区域
  将选定的行向左移动缩进宽度（默认为4个空格）。
评论区域
  在所选行的前面插入##。
取消注释区域
  从所选行中删除前导＃或##。
Tabify区域
  将领先的空格转换为标签。（注意：我们建议使用4个空格来缩进Python代码。）
未分类区域
  将所有 T0>标签切换到正确的空格数。
切换标签页
  打开对话框，在使用空格和制表符缩进之间切换。
新缩进宽度
  打开对话框以更改缩进宽度。Python社区接受的默认值为4个空格。
格式段落
  重新格式化注释块中的当前空白行分隔的段或多行字符串或字符串中的选定行。段落中的所有行将格式化为小于N列，其中N默认为72。
剥离尾部空格
  删除行的最后一个非空格字符后面的任何空格字符。

### 25.5.1.4. 运行菜单（仅限编辑器窗口）

Python Shell
  打开或唤醒Python Shell窗口。
检查模块
  检查当前在编辑器窗口中打开的模块的语法。如果模块未保存，则IDLE将提示用户保存或自动保存，如“空闲设置”对话框的“常规”选项卡中所选。如果存在语法错误，则在编辑器窗口中指示大致位置。
运行模块
  做检查模块（上）。如果没有错误，重新启动shell以清除环境，然后执行模块。输出显示在Shell窗口中。请注意，输出需要使用`print`或`write`。当执行完成时，Shell保持焦点并显示提示。在这一点上，可以交互地探索执行的结果。这与在命令行中使用`python -i 文件`执行文件类似。

### 25.5.1.5. 外壳菜单（仅限外壳窗口）

查看上次重新启动
  将shell窗口滚动到最后一次Shell重启。
重新启动Shell
  重新启动shell以清除环境。

### 25.5.1.6. 调试菜单（仅适用于Shell窗口）

转到文件/行
  看当前行。用光标，上面的行为文件名和行号。如果找到，打开文件，如果还没有打开，并显示行。使用它可以查看异常跟踪中引用的源代码行和通过在文件中查找找到的行。也可以在Shell窗口和输出窗口的上下文菜单中使用。

调试器（切换）
  激活时，在Shell中输入或从编辑器运行的代码将在调试器下运行。在编辑器中，可以使用上下文菜单设置断点。此功能仍然不完整，有些实验性。
堆栈查看器
  在树窗口小部件中显示最后一个异常的堆栈跟踪，可以访问本地和全局。
自动打开堆栈查看器
  切换自动打开未处理异常的堆栈查看器。

### 25.5.1.7. 选项菜单（外壳和编辑器）

配置IDLE

  打开配置对话框并更改以下项的首选项：字体，缩进，键盘绑定，文本颜色主题，启动窗口和大小，其他帮助源和扩展（见下文）。在OS X上，通过在应用程序菜单中选择首选项打开配置对话框。要对较旧的IDLE使用新的内建颜色主题（IDLE Dark），请将其保存为新的自定义主题。

  非默认用户设置保存在用户主目录中的.idlerc目录中。坏的用户配置文件导致的问题可以通过编辑或删除.idlerc中的一个或多个文件来解决。

代码上下文（切换）（仅限编辑器窗口）
  打开编辑窗口顶部的窗格，其中显示了在窗口顶部上方滚动的代码的块上下文。

### 25.5.1.8. 窗口菜单（Shell和编辑器）

缩放高度
  在正常尺寸和最大高度之间切换窗口。初始大小默认为40行乘以80个字符，除非在“配置IDLE”对话框的“常规”选项卡上进行了更改。

此菜单的其余部分列出所有打开的窗口的名称；选择一个将其带到前景（如果必要，将其去模糊化）。

### 25.5.1.9. 帮助菜单（外壳和编辑器）

关于IDLE
  显示版本，版权，许可，信用额等。
IDLE帮助
  显示IDLE的帮助文件，详细说明菜单选项，基本编辑和导航以及其他提示。
Python文档
  访问本地Python文档（如果已安装）或启动Web浏览器并打开docs.python.org，以显示最新的Python文档。
乌龟演示
  使用示例python代码和海龟图来运行turtledemo模块。

可以在此处添加其他帮助源，在“常规”选项卡下的“配置IDLE”对话框中。

### 25.5.1.10. 上下文菜单

通过右键单击窗口（在OS X上按住Ctrl键单击）打开上下文菜单。上下文菜单在编辑菜单上也有标准的剪贴板功能。

切
  将选择内容复制到系统范围的剪贴板；然后删除选择。
复制
  将选择内容复制到系统范围的剪贴板。
糊
  将系统范围剪贴板的内容插入当前窗口。

编辑器窗口也有断点功能。带有断点集的行被特别标记。断点只有在调试器下运行时才有效。文件的断点保存在用户的.idlerc目录中。

设置断点
  在当前行上设置断点。
清除断点
  清除该行上的断点。

Shell和Output窗口具有以下功能。

转到文件/行
  与调试菜单中相同。

## 25.5.2. 编辑和导航

在本节中，'C'指的是Windows和Unix上的`Control`键，以及Mac OSX上的`Command`键。

- `Backspace`向左删除； `Del`向右删除

- `C-Backspace` 删除左侧字； `C-Del`删除右侧的字词

- 箭头键和`页 上` / `页 移动`

- `C-LeftArrow`和`C-RightArrow`按字移动

- `Home` / `End`转到开始/结束行

- `C-Home` / `C-End`转到开始/结束文件

- 一些有用的Emacs绑定继承自Tcl / Tk：

  > - `C-a` beginning of line
  > - `C-e` end of line
  > - `C-k` kill line (but doesn’t put it in clipboard)
  > - `C-l` center window around the insertion point
  > - `C-b` go backwards one character without deleting (usually you can also use the cursor key for this)
  > - `C-f` go forward one character without deleting (usually you can also use the cursor key for this)
  > - `C-p` go up one line (usually you can also use the cursor key for this)
  > - `C-d` delete next character

标准按键绑定（如`C-c`复制和`C-v`粘贴）可能会正常工作。在“配置IDLE”对话框中选择键绑定。

### 25.5.2.1. 自动缩进

在开启语句之后，下一行缩进4个空格（在Python Shell窗口中，一个选项卡）。在某些关键字（break，return等）下一行是扣除。在前导缩进中，`Backspace`删除最多4个空格（如果有）。`Tab`插入空格（在Python Shell窗口的一个选项卡中），数量取决于缩进宽度。由于Tcl / Tk限制，当前标签限制为四个空格。

另请参阅编辑菜单中的缩进/缩进区域命令。

### 25.5.2.2. 完井

为内建和用户定义的类的函数，类和属性提供完成。还为文件名提供了完整性。

在“。”或（在字符串中）键入os.sep之后，AutoCompleteWindow（ACW）将在预定义的延迟（默认值为两秒）后打开。如果在其中一个字符（加上零个或多个其他字符）之后键入一个选项卡，如果找到可能的延续，ACW将立即打开。

如果输入的字符只有一个可能的完成，则`Tab`将提供该完成，而不打开ACW。

“显示完成”将强制打开完成窗口，默认情况下，`C-space`将打开完成窗口。在空字符串中，这将包含当前目录中的文件。在空行上，它将包含当前名称空间中的内建和用户定义的函数和类，以及所有导入的模块。如果输入了一些字符，ACW将尝试更具体。

如果输入了字符串，ACW选择将跳转到与这些字符最匹配的条目。输入`tab`将导致在编辑器窗口或命令行管理程序中输入最长的非歧义匹配。一行中的两个`tab`将提供当前ACW选择，将返回或双击。光标键，Page Up / Down，鼠标选择和滚轮都在ACW上操作。

“隐藏”属性可以通过在“。”之后键入隐藏名称的开头来访问。'_'。这允许访问设置了`__all__`的模块，或者访问类私有属性的模块。

完成和“Expand Word”工具可以节省大量的输入！

完成目前仅限于命名空间中的完成。将不能找到不通过`__main__`和`sys.modules`的编辑器窗口中的名称。使用导入运行模块一次，以纠正这种情况。注意，IDLE本身在sys.modules中放置了很多模块，所以默认情况下可以找到很多模块。re模块。

如果你不喜欢ACW弹出未被禁止，只需延长时间或禁用扩展。

### 25.5.2.3. Calltips

当在可访问函数的名称后面键入`(`）时，会显示一个调用提示。名称表达式可以包括点和下标。调用提示保持，直到它被点击，光标移出参数区域，或`)`被键入。当光标位于定义的参数部分时，菜单或快捷方式将显示一个调用提示。

calltip由函数声明和docstring的第一行组成。对于没有可访问声明的内置，调用提示包括第五行或第一个空白行上的所有行。这些详细信息可能会更改。

可访问函数的集合取决于导入到用户进程中的模块，包括Idle自身导入的模块以及自上次重新启动以来运行的定义。

例如，重新启动Shell并输入`itertools.count(`。出现调用提示，因为Idle将itertools导入用户进程以供自己使用。（这可能改变。）输入`turtle.write(`），不显示任何内容。空闲不导入海龟。菜单或快捷方式也什么也不做。输入`import turtle`，然后输入`turtle.write(`

在编辑器中，import语句在运行文件之前没有任何效果。可能想在顶部写入import语句后运行文件，或在编辑之前立即运行现有文件。

### 25.5.2.4. Python Shell窗口

- `C-c`中断执行命令

- `C-d`发送文件结束；如果在`>>>`提示处键入，则关闭窗口

- `Alt-/`（展开单词）也有助于减少打字

  命令历史

  - `Alt-p`检索与您键入的命令匹配的上一个命令。在OS X上使用`C-p`。
  - `Alt-n`检索下一个。在OS X上使用`C-n`。
  - `Return`，而任何上一个命令检索该命令

### 25.5.2.5. 文字颜色

空白默认为白色文本上的黑色，但颜色具有特殊含义的文本。对于shell，这些是shell输出，shell错误，用户输出和用户错误。对于Python代码，在shell提示符或编辑器中，这些是关键字，内置类和函数名，`class`和`def`后面的名称，字符串和注释。对于任何文本窗口，这些是光标（如果存在），找到的文本（如果可能）和选定的文本。

文本着色在背景中完成，所以未着色的文本偶尔可见。要更改颜色方案，请使用“配置IDLE”对话框的“突出显示”选项卡。编辑器中调试器断点行的标记和弹出窗口和对话框中的文本不是用户可配置的。

## 25.5.3. 启动和代码执行

使用`-s`选项启动时，IDLE将执行环境变量 `IDLESTARTUP`或 `PYTHONSTARTUP`。IDLE首先检查`IDLESTARTUP`；如果出现`IDLESTARTUP`，则引用的文件将运行。如果`IDLESTARTUP`不存在，IDLE将检查`PYTHONSTARTUP`。这些环境变量引用的文件是存储从IDLE shell中频繁使用的函数或执行import语句以导入公共模块的便利位置。

此外，`Tk`还会加载启动文件（如果存在）。注意，无条件地加载Tk文件。此附加文件为`.Idle.py`，并在用户的主目录中找到。此文件中的语句将在Tk命名空间中执行，因此此文件对于从IDLE的Python shell导入要使用的函数不是有用的。

### 25.5.3.1. 命令行用法

    idle.py [-c command] [-d] [-e] [-h] [-i] [-r file] [-s] [-t title] [-] [arg] ...

    -c command  run command in the shell window
    -d          enable debugger and open shell window
    -e          open editor window
    -h          print help message with legal combinatios and exit
    -i          open shell window
    -r file     run file in shell window
    -s          run $IDLESTARTUP or $PYTHONSTARTUP first, in shell window
    -t title    set title of shell window
    -           run stdin in shell (- must be last option before args)

如果有参数：

- If `-`, `-c`, or `r` is used, all arguments are placed in `sys.argv[1:...]` and `sys.argv[0]` is set to `''`, `'-c'`, or `'-r'`. 不打开编辑器窗口，即使它是“选项”对话框中的默认设置。
- 否则，参数是打开以供编辑的文件，而`sys.argv`反映传递给IDLE本身的参数。

### 25.5.3.2. 空闲 - 控制台差异

尽可能地，使用IDLE执行Python代码的结果与在控制台窗口中执行相同的代码相同。但是，不同的接口和操作偶尔会影响可见的结果。对于实例，`sys.modules`以更多条目开头。

IDLE还用从Shell窗口获取输入和将输出发送到Shell窗口的对象替换`sys.stdin`，`sys.stdout`和`sys.stderr`。当这个窗口有焦点时，它控制键盘和屏幕。这通常是透明的，但直接访问键盘和屏幕的功能将不起作用。If `sys` is reset with `importlib.reload(sys)`, IDLE’s changes are lost and things li ke `input`, `raw_input`, and `print` will not work correctly.

使用IDLE的Shell，一个进入，编辑，并召回完整的语句。有些控制台一次只能使用一条物理线路。

### 25.5.3.3. 没有子进程运行

默认情况下，IDLE通过套接字在单独的子进程中执行用户代码，该套接字使用内部回送接口。此连接不是外部可见的，并且没有数据发送到Internet或从Internet接收。如果防火墙软件反正，你可以忽略它。

如果尝试使套接字连接失败，Idle将通知您。这种故障有时是暂时的，但如果是持久的，问题可能是防火墙阻塞连接或特定系统的配置错误。直到问题解决，可以使用-n命令行开关运行Idle。

如果IDLE使用-n命令行开关启动，它将在单个进程中运行，并且不会创建运行RPC Python执行服务器的子进程。如果Python无法在您的平台上创建子进程或RPC套接字接口，这将非常有用。但是，在此模式下，用户代码不与IDLE本身隔离。此外，当选择运行/运行模块（F5）时，不会重新启动环境。如果您的代码已被修改，您必须重新载入()受影响的模块，并重新导入任何特定项目（例如从foo import baz）如果更改生效。由于这些原因，如果可能，最好使用默认子进程运行IDLE。

自3.4版起已弃用。

## 25.5.4. 帮助和首选项

### 25.5.4.1. 其他帮助来源

IDLE包括一个称为“Python文档”的帮助菜单条目，将打开包含教程的广泛帮助源，可从docs.python.org获取。所选的URL可以随时使用“配置IDLE”对话框从帮助菜单中添加或删除。有关详细信息，请参阅IDLE帮助菜单中的IDLE帮助选项。

### 25.5.4.2. 设置首选项

可以通过选项菜单上的配置IDLE更改字体首选项，突出显示，键和常规首选项。键可以由用户定义； IDLE附带四个内置的密钥集。此外，用户可以在“配置IDLE”对话框的“键”选项卡下创建自定义键集。

### 25.5.4.3. 扩展程序

IDLE包含扩展设施。扩展的扩展可以使用配置扩展进行更改。有关更多信息，请参阅idlelib目录中config-extensions.def的开头。默认扩展名当前为：

- FormatParagraph
- 自动展开
- ZoomHeight
- 脚本绑定
- 呼叫提示
- ParenMatch
- 自动完成
- CodeContext
- RstripExtension