Terry Jan Reedy | af4b013 | 2018-06-10 15:48:41 -0400 | [diff] [blame] | 1 | |
Tal Einat | 580bdb0 | 2019-09-03 23:52:58 +0300 | [diff] [blame] | 2 | <!DOCTYPE html> |
Terry Jan Reedy | 5d46ab1 | 2015-09-20 19:57:13 -0400 | [diff] [blame] | 3 | |
Terry Jan Reedy | a460d45 | 2020-10-20 20:56:01 -0400 | [diff] [blame] | 4 | <html> |
Terry Jan Reedy | 5d46ab1 | 2015-09-20 19:57:13 -0400 | [diff] [blame] | 5 | <head> |
Tal Einat | 580bdb0 | 2019-09-03 23:52:58 +0300 | [diff] [blame] | 6 | <meta charset="utf-8" /> |
Terry Jan Reedy | a460d45 | 2020-10-20 20:56:01 -0400 | [diff] [blame] | 7 | <meta name="viewport" content="width=device-width, initial-scale=1.0" /> |
Terry Jan Reedy | 1b4a9c7 | 2021-03-31 01:19:38 -0400 | [diff] [blame] | 8 | <title>IDLE — Python 3.10.0a6 documentation</title> |
Terry Jan Reedy | 5d46ab1 | 2015-09-20 19:57:13 -0400 | [diff] [blame] | 9 | <link rel="stylesheet" href="../_static/pydoctheme.css" type="text/css" /> |
| 10 | <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> |
Terry Jan Reedy | db40cb5 | 2018-10-28 01:21:36 -0400 | [diff] [blame] | 11 | |
Terry Jan Reedy | a460d45 | 2020-10-20 20:56:01 -0400 | [diff] [blame] | 12 | <script id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script> |
| 13 | <script src="../_static/jquery.js"></script> |
| 14 | <script src="../_static/underscore.js"></script> |
| 15 | <script src="../_static/doctools.js"></script> |
| 16 | <script src="../_static/language_data.js"></script> |
Terry Jan Reedy | db40cb5 | 2018-10-28 01:21:36 -0400 | [diff] [blame] | 17 | |
Terry Jan Reedy | a460d45 | 2020-10-20 20:56:01 -0400 | [diff] [blame] | 18 | <script src="../_static/sidebar.js"></script> |
Terry Jan Reedy | db40cb5 | 2018-10-28 01:21:36 -0400 | [diff] [blame] | 19 | |
Terry Jan Reedy | 5d46ab1 | 2015-09-20 19:57:13 -0400 | [diff] [blame] | 20 | <link rel="search" type="application/opensearchdescription+xml" |
Terry Jan Reedy | 1b4a9c7 | 2021-03-31 01:19:38 -0400 | [diff] [blame] | 21 | title="Search within Python 3.10.0a6 documentation" |
Terry Jan Reedy | 5d46ab1 | 2015-09-20 19:57:13 -0400 | [diff] [blame] | 22 | href="../_static/opensearch.xml"/> |
| 23 | <link rel="author" title="About these documents" href="../about.html" /> |
Terry Jan Reedy | af4b013 | 2018-06-10 15:48:41 -0400 | [diff] [blame] | 24 | <link rel="index" title="Index" href="../genindex.html" /> |
| 25 | <link rel="search" title="Search" href="../search.html" /> |
Terry Jan Reedy | 5d46ab1 | 2015-09-20 19:57:13 -0400 | [diff] [blame] | 26 | <link rel="copyright" title="Copyright" href="../copyright.html" /> |
Terry Jan Reedy | db40cb5 | 2018-10-28 01:21:36 -0400 | [diff] [blame] | 27 | <link rel="next" title="Other Graphical User Interface Packages" href="othergui.html" /> |
Terry Jan Reedy | 6bf644e | 2019-11-24 16:29:29 -0500 | [diff] [blame] | 28 | <link rel="prev" title="tkinter.tix — Extension widgets for Tk" href="tkinter.tix.html" /> |
terryjreedy | 188aedf | 2017-06-13 21:32:16 -0400 | [diff] [blame] | 29 | <link rel="canonical" href="https://docs.python.org/3/library/idle.html" /> |
| 30 | |
Terry Jan Reedy | af4b013 | 2018-06-10 15:48:41 -0400 | [diff] [blame] | 31 | |
| 32 | |
| 33 | |
| 34 | |
Terry Jan Reedy | db40cb5 | 2018-10-28 01:21:36 -0400 | [diff] [blame] | 35 | <style> |
| 36 | @media only screen { |
| 37 | table.full-width-table { |
| 38 | width: 100%; |
| 39 | } |
| 40 | } |
| 41 | </style> |
| 42 | |
Terry Jan Reedy | af4b013 | 2018-06-10 15:48:41 -0400 | [diff] [blame] | 43 | <link rel="shortcut icon" type="image/png" href="../_static/py.png" /> |
| 44 | |
Terry Jan Reedy | 5d46ab1 | 2015-09-20 19:57:13 -0400 | [diff] [blame] | 45 | <script type="text/javascript" src="../_static/copybutton.js"></script> |
Terry Jan Reedy | 963a38b | 2015-09-20 20:03:01 -0400 | [diff] [blame] | 46 | |
| 47 | |
| 48 | |
Terry Jan Reedy | 5d46ab1 | 2015-09-20 19:57:13 -0400 | [diff] [blame] | 49 | |
Terry Jan Reedy | af4b013 | 2018-06-10 15:48:41 -0400 | [diff] [blame] | 50 | </head><body> |
Tal Einat | 5bff3c8 | 2019-06-17 22:41:00 +0300 | [diff] [blame] | 51 | |
Terry Jan Reedy | f8cd02d | 2016-03-01 00:29:57 -0500 | [diff] [blame] | 52 | <div class="related" role="navigation" aria-label="related navigation"> |
Terry Jan Reedy | 5d46ab1 | 2015-09-20 19:57:13 -0400 | [diff] [blame] | 53 | <h3>Navigation</h3> |
| 54 | <ul> |
| 55 | <li class="right" style="margin-right: 10px"> |
| 56 | <a href="../genindex.html" title="General Index" |
| 57 | accesskey="I">index</a></li> |
| 58 | <li class="right" > |
| 59 | <a href="../py-modindex.html" title="Python Module Index" |
| 60 | >modules</a> |</li> |
| 61 | <li class="right" > |
Terry Jan Reedy | db40cb5 | 2018-10-28 01:21:36 -0400 | [diff] [blame] | 62 | <a href="othergui.html" title="Other Graphical User Interface Packages" |
Terry Jan Reedy | 5d46ab1 | 2015-09-20 19:57:13 -0400 | [diff] [blame] | 63 | accesskey="N">next</a> |</li> |
| 64 | <li class="right" > |
Terry Jan Reedy | 6bf644e | 2019-11-24 16:29:29 -0500 | [diff] [blame] | 65 | <a href="tkinter.tix.html" title="tkinter.tix — Extension widgets for Tk" |
Terry Jan Reedy | 5d46ab1 | 2015-09-20 19:57:13 -0400 | [diff] [blame] | 66 | accesskey="P">previous</a> |</li> |
Terry Jan Reedy | 5d46ab1 | 2015-09-20 19:57:13 -0400 | [diff] [blame] | 67 | |
Terry Jan Reedy | af4b013 | 2018-06-10 15:48:41 -0400 | [diff] [blame] | 68 | <li><img src="../_static/py.png" alt="" |
| 69 | style="vertical-align: middle; margin-top: -1px"/></li> |
| 70 | <li><a href="https://www.python.org/">Python</a> »</li> |
| 71 | |
| 72 | |
Terry Jan Reedy | 4cf7bb8 | 2021-02-21 02:44:11 -0500 | [diff] [blame] | 73 | <li id="cpython-language-and-version"> |
Terry Jan Reedy | 1b4a9c7 | 2021-03-31 01:19:38 -0400 | [diff] [blame] | 74 | <a href="../index.html">3.10.0a6 Documentation</a> » |
Terry Jan Reedy | af4b013 | 2018-06-10 15:48:41 -0400 | [diff] [blame] | 75 | </li> |
| 76 | |
| 77 | <li class="nav-item nav-item-1"><a href="index.html" >The Python Standard Library</a> »</li> |
Terry Jan Reedy | db40cb5 | 2018-10-28 01:21:36 -0400 | [diff] [blame] | 78 | <li class="nav-item nav-item-2"><a href="tk.html" accesskey="U">Graphical User Interfaces with Tk</a> »</li> |
Terry Jan Reedy | a460d45 | 2020-10-20 20:56:01 -0400 | [diff] [blame] | 79 | <li class="nav-item nav-item-this"><a href="">IDLE</a></li> |
Terry Jan Reedy | 4b73676 | 2016-09-12 01:50:03 -0400 | [diff] [blame] | 80 | <li class="right"> |
| 81 | |
| 82 | |
| 83 | <div class="inline-search" style="display: none" role="search"> |
| 84 | <form class="inline-search" action="../search.html" method="get"> |
| 85 | <input placeholder="Quick search" type="text" name="q" /> |
| 86 | <input type="submit" value="Go" /> |
| 87 | <input type="hidden" name="check_keywords" value="yes" /> |
| 88 | <input type="hidden" name="area" value="default" /> |
| 89 | </form> |
| 90 | </div> |
| 91 | <script type="text/javascript">$('.inline-search').show(0);</script> |
| 92 | | |
| 93 | </li> |
| 94 | |
Terry Jan Reedy | 5d46ab1 | 2015-09-20 19:57:13 -0400 | [diff] [blame] | 95 | </ul> |
Terry Jan Reedy | 963a38b | 2015-09-20 20:03:01 -0400 | [diff] [blame] | 96 | </div> |
Terry Jan Reedy | 5d46ab1 | 2015-09-20 19:57:13 -0400 | [diff] [blame] | 97 | |
| 98 | <div class="document"> |
| 99 | <div class="documentwrapper"> |
| 100 | <div class="bodywrapper"> |
Terry Jan Reedy | f8cd02d | 2016-03-01 00:29:57 -0500 | [diff] [blame] | 101 | <div class="body" role="main"> |
Terry Jan Reedy | 963a38b | 2015-09-20 20:03:01 -0400 | [diff] [blame] | 102 | |
Terry Jan Reedy | 5d46ab1 | 2015-09-20 19:57:13 -0400 | [diff] [blame] | 103 | <div class="section" id="idle"> |
Terry Jan Reedy | db40cb5 | 2018-10-28 01:21:36 -0400 | [diff] [blame] | 104 | <span id="id1"></span><h1>IDLE<a class="headerlink" href="#idle" title="Permalink to this headline">¶</a></h1> |
terryjreedy | 188aedf | 2017-06-13 21:32:16 -0400 | [diff] [blame] | 105 | <p><strong>Source code:</strong> <a class="reference external" href="https://github.com/python/cpython/tree/master/Lib/idlelib/">Lib/idlelib/</a></p> |
Terry Jan Reedy | fa089b9 | 2016-06-11 15:02:54 -0400 | [diff] [blame] | 106 | <hr class="docutils" id="index-0" /> |
Terry Jan Reedy | af4b013 | 2018-06-10 15:48:41 -0400 | [diff] [blame] | 107 | <p>IDLE is Python’s Integrated Development and Learning Environment.</p> |
Terry Jan Reedy | 5d46ab1 | 2015-09-20 19:57:13 -0400 | [diff] [blame] | 108 | <p>IDLE has the following features:</p> |
| 109 | <ul class="simple"> |
Tal Einat | 580bdb0 | 2019-09-03 23:52:58 +0300 | [diff] [blame] | 110 | <li><p>coded in 100% pure Python, using the <a class="reference internal" href="tkinter.html#module-tkinter" title="tkinter: Interface to Tcl/Tk for graphical user interfaces"><code class="xref py py-mod docutils literal notranslate"><span class="pre">tkinter</span></code></a> GUI toolkit</p></li> |
| 111 | <li><p>cross-platform: works mostly the same on Windows, Unix, and macOS</p></li> |
| 112 | <li><p>Python shell window (interactive interpreter) with colorizing |
| 113 | of code input, output, and error messages</p></li> |
| 114 | <li><p>multi-window text editor with multiple undo, Python colorizing, |
| 115 | smart indent, call tips, auto completion, and other features</p></li> |
| 116 | <li><p>search within any window, replace within editor windows, and search |
| 117 | through multiple files (grep)</p></li> |
| 118 | <li><p>debugger with persistent breakpoints, stepping, and viewing |
| 119 | of global and local namespaces</p></li> |
| 120 | <li><p>configuration, browsers, and other dialogs</p></li> |
Terry Jan Reedy | 5d46ab1 | 2015-09-20 19:57:13 -0400 | [diff] [blame] | 121 | </ul> |
| 122 | <div class="section" id="menus"> |
Terry Jan Reedy | db40cb5 | 2018-10-28 01:21:36 -0400 | [diff] [blame] | 123 | <h2>Menus<a class="headerlink" href="#menus" title="Permalink to this headline">¶</a></h2> |
Terry Jan Reedy | 5d46ab1 | 2015-09-20 19:57:13 -0400 | [diff] [blame] | 124 | <p>IDLE has two main window types, the Shell window and the Editor window. It is |
Terry Jan Reedy | 50ff02b | 2018-11-10 23:26:31 -0500 | [diff] [blame] | 125 | possible to have multiple editor windows simultaneously. On Windows and |
| 126 | Linux, each has its own top menu. Each menu documented below indicates |
| 127 | which window type it is associated with.</p> |
| 128 | <p>Output windows, such as used for Edit => Find in Files, are a subtype of editor |
| 129 | window. They currently have the same top menu but a different |
| 130 | default title and context menu.</p> |
Terry Jan Reedy | b65413b | 2018-11-15 13:15:13 -0500 | [diff] [blame] | 131 | <p>On macOS, there is one application menu. It dynamically changes according |
Terry Jan Reedy | 50ff02b | 2018-11-10 23:26:31 -0500 | [diff] [blame] | 132 | to the window currently selected. It has an IDLE menu, and some entries |
Terry Jan Reedy | 8a533ff | 2019-05-16 01:20:37 -0400 | [diff] [blame] | 133 | described below are moved around to conform to Apple guidelines.</p> |
Terry Jan Reedy | 5d46ab1 | 2015-09-20 19:57:13 -0400 | [diff] [blame] | 134 | <div class="section" id="file-menu-shell-and-editor"> |
Terry Jan Reedy | db40cb5 | 2018-10-28 01:21:36 -0400 | [diff] [blame] | 135 | <h3>File menu (Shell and Editor)<a class="headerlink" href="#file-menu-shell-and-editor" title="Permalink to this headline">¶</a></h3> |
Tal Einat | 580bdb0 | 2019-09-03 23:52:58 +0300 | [diff] [blame] | 136 | <dl class="simple"> |
| 137 | <dt>New File</dt><dd><p>Create a new file editing window.</p> |
| 138 | </dd> |
| 139 | <dt>Open…</dt><dd><p>Open an existing file with an Open dialog.</p> |
| 140 | </dd> |
| 141 | <dt>Recent Files</dt><dd><p>Open a list of recent files. Click one to open it.</p> |
| 142 | </dd> |
| 143 | <dt>Open Module…</dt><dd><p>Open an existing module (searches sys.path).</p> |
| 144 | </dd> |
Terry Jan Reedy | 5d46ab1 | 2015-09-20 19:57:13 -0400 | [diff] [blame] | 145 | </dl> |
Tal Einat | 580bdb0 | 2019-09-03 23:52:58 +0300 | [diff] [blame] | 146 | <dl class="simple" id="index-1"> |
| 147 | <dt>Class Browser</dt><dd><p>Show functions, classes, and methods in the current Editor file in a |
| 148 | tree structure. In the shell, open a module first.</p> |
| 149 | </dd> |
| 150 | <dt>Path Browser</dt><dd><p>Show sys.path directories, modules, functions, classes and methods in a |
| 151 | tree structure.</p> |
| 152 | </dd> |
| 153 | <dt>Save</dt><dd><p>Save the current window to the associated file, if there is one. Windows |
Terry Jan Reedy | 5d46ab1 | 2015-09-20 19:57:13 -0400 | [diff] [blame] | 154 | that have been changed since being opened or last saved have a * before |
| 155 | and after the window title. If there is no associated file, |
Tal Einat | 580bdb0 | 2019-09-03 23:52:58 +0300 | [diff] [blame] | 156 | do Save As instead.</p> |
| 157 | </dd> |
| 158 | <dt>Save As…</dt><dd><p>Save the current window with a Save As dialog. The file saved becomes the |
| 159 | new associated file for the window.</p> |
| 160 | </dd> |
| 161 | <dt>Save Copy As…</dt><dd><p>Save the current window to different file without changing the associated |
| 162 | file.</p> |
| 163 | </dd> |
| 164 | <dt>Print Window</dt><dd><p>Print the current window to the default printer.</p> |
| 165 | </dd> |
| 166 | <dt>Close</dt><dd><p>Close the current window (ask to save if unsaved).</p> |
| 167 | </dd> |
| 168 | <dt>Exit</dt><dd><p>Close all windows and quit IDLE (ask to save unsaved windows).</p> |
| 169 | </dd> |
Terry Jan Reedy | 5d46ab1 | 2015-09-20 19:57:13 -0400 | [diff] [blame] | 170 | </dl> |
| 171 | </div> |
| 172 | <div class="section" id="edit-menu-shell-and-editor"> |
Terry Jan Reedy | db40cb5 | 2018-10-28 01:21:36 -0400 | [diff] [blame] | 173 | <h3>Edit menu (Shell and Editor)<a class="headerlink" href="#edit-menu-shell-and-editor" title="Permalink to this headline">¶</a></h3> |
Tal Einat | 580bdb0 | 2019-09-03 23:52:58 +0300 | [diff] [blame] | 174 | <dl class="simple"> |
| 175 | <dt>Undo</dt><dd><p>Undo the last change to the current window. A maximum of 1000 changes may |
| 176 | be undone.</p> |
| 177 | </dd> |
| 178 | <dt>Redo</dt><dd><p>Redo the last undone change to the current window.</p> |
| 179 | </dd> |
| 180 | <dt>Cut</dt><dd><p>Copy selection into the system-wide clipboard; then delete the selection.</p> |
| 181 | </dd> |
| 182 | <dt>Copy</dt><dd><p>Copy selection into the system-wide clipboard.</p> |
| 183 | </dd> |
| 184 | <dt>Paste</dt><dd><p>Insert contents of the system-wide clipboard into the current window.</p> |
| 185 | </dd> |
Terry Jan Reedy | 5d46ab1 | 2015-09-20 19:57:13 -0400 | [diff] [blame] | 186 | </dl> |
| 187 | <p>The clipboard functions are also available in context menus.</p> |
Tal Einat | 580bdb0 | 2019-09-03 23:52:58 +0300 | [diff] [blame] | 188 | <dl class="simple"> |
| 189 | <dt>Select All</dt><dd><p>Select the entire contents of the current window.</p> |
| 190 | </dd> |
| 191 | <dt>Find…</dt><dd><p>Open a search dialog with many options</p> |
| 192 | </dd> |
| 193 | <dt>Find Again</dt><dd><p>Repeat the last search, if there is one.</p> |
| 194 | </dd> |
| 195 | <dt>Find Selection</dt><dd><p>Search for the currently selected string, if there is one.</p> |
| 196 | </dd> |
| 197 | <dt>Find in Files…</dt><dd><p>Open a file search dialog. Put results in a new output window.</p> |
| 198 | </dd> |
| 199 | <dt>Replace…</dt><dd><p>Open a search-and-replace dialog.</p> |
| 200 | </dd> |
Terry Jan Reedy | 2522db1 | 2020-03-08 14:32:42 -0400 | [diff] [blame] | 201 | <dt>Go to Line</dt><dd><p>Move the cursor to the beginning of the line requested and make that |
| 202 | line visible. A request past the end of the file goes to the end. |
| 203 | Clear any selection and update the line and column status.</p> |
Tal Einat | 580bdb0 | 2019-09-03 23:52:58 +0300 | [diff] [blame] | 204 | </dd> |
Terry Jan Reedy | bce2eb4 | 2020-07-09 18:08:33 -0400 | [diff] [blame] | 205 | <dt>Show Completions</dt><dd><p>Open a scrollable list allowing selection of existing names. See |
Tal Einat | 580bdb0 | 2019-09-03 23:52:58 +0300 | [diff] [blame] | 206 | <a class="reference internal" href="#completions"><span class="std std-ref">Completions</span></a> in the Editing and navigation section below.</p> |
| 207 | </dd> |
| 208 | <dt>Expand Word</dt><dd><p>Expand a prefix you have typed to match a full word in the same window; |
| 209 | repeat to get a different expansion.</p> |
| 210 | </dd> |
| 211 | <dt>Show call tip</dt><dd><p>After an unclosed parenthesis for a function, open a small window with |
Cheryl Sabella | 01421be | 2018-12-20 00:38:54 -0500 | [diff] [blame] | 212 | function parameter hints. See <a class="reference internal" href="#calltips"><span class="std std-ref">Calltips</span></a> in the |
Tal Einat | 580bdb0 | 2019-09-03 23:52:58 +0300 | [diff] [blame] | 213 | Editing and navigation section below.</p> |
| 214 | </dd> |
| 215 | <dt>Show surrounding parens</dt><dd><p>Highlight the surrounding parenthesis.</p> |
| 216 | </dd> |
Terry Jan Reedy | 5d46ab1 | 2015-09-20 19:57:13 -0400 | [diff] [blame] | 217 | </dl> |
| 218 | </div> |
| 219 | <div class="section" id="format-menu-editor-window-only"> |
Terry Jan Reedy | 292cd6e | 2018-12-20 06:06:29 -0500 | [diff] [blame] | 220 | <span id="format-menu"></span><h3>Format menu (Editor window only)<a class="headerlink" href="#format-menu-editor-window-only" title="Permalink to this headline">¶</a></h3> |
Tal Einat | 580bdb0 | 2019-09-03 23:52:58 +0300 | [diff] [blame] | 221 | <dl class="simple"> |
| 222 | <dt>Indent Region</dt><dd><p>Shift selected lines right by the indent width (default 4 spaces).</p> |
| 223 | </dd> |
| 224 | <dt>Dedent Region</dt><dd><p>Shift selected lines left by the indent width (default 4 spaces).</p> |
| 225 | </dd> |
| 226 | <dt>Comment Out Region</dt><dd><p>Insert ## in front of selected lines.</p> |
| 227 | </dd> |
| 228 | <dt>Uncomment Region</dt><dd><p>Remove leading # or ## from selected lines.</p> |
| 229 | </dd> |
| 230 | <dt>Tabify Region</dt><dd><p>Turn <em>leading</em> stretches of spaces into tabs. (Note: We recommend using |
| 231 | 4 space blocks to indent Python code.)</p> |
| 232 | </dd> |
| 233 | <dt>Untabify Region</dt><dd><p>Turn <em>all</em> tabs into the correct number of spaces.</p> |
| 234 | </dd> |
| 235 | <dt>Toggle Tabs</dt><dd><p>Open a dialog to switch between indenting with spaces and tabs.</p> |
| 236 | </dd> |
| 237 | <dt>New Indent Width</dt><dd><p>Open a dialog to change indent width. The accepted default by the Python |
| 238 | community is 4 spaces.</p> |
| 239 | </dd> |
| 240 | <dt>Format Paragraph</dt><dd><p>Reformat the current blank-line-delimited paragraph in comment block or |
Terry Jan Reedy | 5d46ab1 | 2015-09-20 19:57:13 -0400 | [diff] [blame] | 241 | multiline string or selected line in a string. All lines in the |
Tal Einat | 580bdb0 | 2019-09-03 23:52:58 +0300 | [diff] [blame] | 242 | paragraph will be formatted to less than N columns, where N defaults to 72.</p> |
| 243 | </dd> |
| 244 | <dt>Strip trailing whitespace</dt><dd><p>Remove trailing space and other whitespace characters after the last |
Terry Jan Reedy | ff70289 | 2017-09-15 13:05:28 -0400 | [diff] [blame] | 245 | non-whitespace character of a line by applying str.rstrip to each line, |
Terry Jan Reedy | 6bf644e | 2019-11-24 16:29:29 -0500 | [diff] [blame] | 246 | including lines within multiline strings. Except for Shell windows, |
| 247 | remove extra newlines at the end of the file.</p> |
Tal Einat | 580bdb0 | 2019-09-03 23:52:58 +0300 | [diff] [blame] | 248 | </dd> |
Terry Jan Reedy | 5d46ab1 | 2015-09-20 19:57:13 -0400 | [diff] [blame] | 249 | </dl> |
| 250 | </div> |
| 251 | <div class="section" id="run-menu-editor-window-only"> |
Terry Jan Reedy | db40cb5 | 2018-10-28 01:21:36 -0400 | [diff] [blame] | 252 | <span id="index-2"></span><h3>Run menu (Editor window only)<a class="headerlink" href="#run-menu-editor-window-only" title="Permalink to this headline">¶</a></h3> |
Tal Einat | 580bdb0 | 2019-09-03 23:52:58 +0300 | [diff] [blame] | 253 | <dl class="simple" id="run-module"> |
| 254 | <dt>Run Module</dt><dd><p>Do <a class="reference internal" href="#check-module"><span class="std std-ref">Check Module</span></a>. If no error, restart the shell to clean the |
Terry Jan Reedy | 0053c47 | 2015-09-24 03:09:43 -0400 | [diff] [blame] | 255 | environment, then execute the module. Output is displayed in the Shell |
Terry Jan Reedy | af4b013 | 2018-06-10 15:48:41 -0400 | [diff] [blame] | 256 | window. Note that output requires use of <code class="docutils literal notranslate"><span class="pre">print</span></code> or <code class="docutils literal notranslate"><span class="pre">write</span></code>. |
Terry Jan Reedy | 0053c47 | 2015-09-24 03:09:43 -0400 | [diff] [blame] | 257 | When execution is complete, the Shell retains focus and displays a prompt. |
| 258 | At this point, one may interactively explore the result of execution. |
Terry Jan Reedy | af4b013 | 2018-06-10 15:48:41 -0400 | [diff] [blame] | 259 | This is similar to executing a file with <code class="docutils literal notranslate"><span class="pre">python</span> <span class="pre">-i</span> <span class="pre">file</span></code> at a command |
Tal Einat | 580bdb0 | 2019-09-03 23:52:58 +0300 | [diff] [blame] | 260 | line.</p> |
| 261 | </dd> |
Terry Jan Reedy | 5d46ab1 | 2015-09-20 19:57:13 -0400 | [diff] [blame] | 262 | </dl> |
Tal Einat | 580bdb0 | 2019-09-03 23:52:58 +0300 | [diff] [blame] | 263 | <dl class="simple" id="run-custom"> |
| 264 | <dt>Run… Customized</dt><dd><p>Same as <a class="reference internal" href="#run-module"><span class="std std-ref">Run Module</span></a>, but run the module with customized |
Cheryl Sabella | 201bc2d | 2019-06-17 22:24:10 -0400 | [diff] [blame] | 265 | settings. <em>Command Line Arguments</em> extend <a class="reference internal" href="sys.html#sys.argv" title="sys.argv"><code class="xref py py-data docutils literal notranslate"><span class="pre">sys.argv</span></code></a> as if passed |
Tal Einat | 580bdb0 | 2019-09-03 23:52:58 +0300 | [diff] [blame] | 266 | on a command line. The module can be run in the Shell without restarting.</p> |
| 267 | </dd> |
Cheryl Sabella | 201bc2d | 2019-06-17 22:24:10 -0400 | [diff] [blame] | 268 | </dl> |
Tal Einat | 580bdb0 | 2019-09-03 23:52:58 +0300 | [diff] [blame] | 269 | <dl class="simple" id="check-module"> |
| 270 | <dt>Check Module</dt><dd><p>Check the syntax of the module currently open in the Editor window. If the |
Terry Jan Reedy | 1407029 | 2019-08-04 16:45:15 -0400 | [diff] [blame] | 271 | module has not been saved IDLE will either prompt the user to save or |
| 272 | autosave, as selected in the General tab of the Idle Settings dialog. If |
| 273 | there is a syntax error, the approximate location is indicated in the |
Tal Einat | 580bdb0 | 2019-09-03 23:52:58 +0300 | [diff] [blame] | 274 | Editor window.</p> |
| 275 | </dd> |
Terry Jan Reedy | 1407029 | 2019-08-04 16:45:15 -0400 | [diff] [blame] | 276 | </dl> |
Tal Einat | 580bdb0 | 2019-09-03 23:52:58 +0300 | [diff] [blame] | 277 | <dl class="simple" id="python-shell"> |
| 278 | <dt>Python Shell</dt><dd><p>Open or wake up the Python Shell window.</p> |
| 279 | </dd> |
Terry Jan Reedy | 1407029 | 2019-08-04 16:45:15 -0400 | [diff] [blame] | 280 | </dl> |
Terry Jan Reedy | 5d46ab1 | 2015-09-20 19:57:13 -0400 | [diff] [blame] | 281 | </div> |
| 282 | <div class="section" id="shell-menu-shell-window-only"> |
Terry Jan Reedy | db40cb5 | 2018-10-28 01:21:36 -0400 | [diff] [blame] | 283 | <h3>Shell menu (Shell window only)<a class="headerlink" href="#shell-menu-shell-window-only" title="Permalink to this headline">¶</a></h3> |
Tal Einat | 580bdb0 | 2019-09-03 23:52:58 +0300 | [diff] [blame] | 284 | <dl class="simple"> |
| 285 | <dt>View Last Restart</dt><dd><p>Scroll the shell window to the last Shell restart.</p> |
| 286 | </dd> |
Terry Jan Reedy | 4cf7bb8 | 2021-02-21 02:44:11 -0500 | [diff] [blame] | 287 | <dt>Restart Shell</dt><dd><p>Restart the shell to clean the environment and reset display and exception handling.</p> |
Tal Einat | 580bdb0 | 2019-09-03 23:52:58 +0300 | [diff] [blame] | 288 | </dd> |
| 289 | <dt>Previous History</dt><dd><p>Cycle through earlier commands in history which match the current entry.</p> |
| 290 | </dd> |
| 291 | <dt>Next History</dt><dd><p>Cycle through later commands in history which match the current entry.</p> |
| 292 | </dd> |
| 293 | <dt>Interrupt Execution</dt><dd><p>Stop a running program.</p> |
| 294 | </dd> |
Terry Jan Reedy | 5d46ab1 | 2015-09-20 19:57:13 -0400 | [diff] [blame] | 295 | </dl> |
| 296 | </div> |
| 297 | <div class="section" id="debug-menu-shell-window-only"> |
Terry Jan Reedy | db40cb5 | 2018-10-28 01:21:36 -0400 | [diff] [blame] | 298 | <h3>Debug menu (Shell window only)<a class="headerlink" href="#debug-menu-shell-window-only" title="Permalink to this headline">¶</a></h3> |
Tal Einat | 580bdb0 | 2019-09-03 23:52:58 +0300 | [diff] [blame] | 299 | <dl class="simple"> |
| 300 | <dt>Go to File/Line</dt><dd><p>Look on the current line. with the cursor, and the line above for a filename |
Terry Jan Reedy | 5d46ab1 | 2015-09-20 19:57:13 -0400 | [diff] [blame] | 301 | and line number. If found, open the file if not already open, and show the |
| 302 | line. Use this to view source lines referenced in an exception traceback |
| 303 | and lines found by Find in Files. Also available in the context menu of |
Tal Einat | 580bdb0 | 2019-09-03 23:52:58 +0300 | [diff] [blame] | 304 | the Shell window and Output windows.</p> |
| 305 | </dd> |
Terry Jan Reedy | 5d46ab1 | 2015-09-20 19:57:13 -0400 | [diff] [blame] | 306 | </dl> |
Tal Einat | 580bdb0 | 2019-09-03 23:52:58 +0300 | [diff] [blame] | 307 | <dl class="simple" id="index-3"> |
| 308 | <dt>Debugger (toggle)</dt><dd><p>When activated, code entered in the Shell or run from an Editor will run |
Terry Jan Reedy | 5d46ab1 | 2015-09-20 19:57:13 -0400 | [diff] [blame] | 309 | under the debugger. In the Editor, breakpoints can be set with the context |
Tal Einat | 580bdb0 | 2019-09-03 23:52:58 +0300 | [diff] [blame] | 310 | menu. This feature is still incomplete and somewhat experimental.</p> |
| 311 | </dd> |
| 312 | <dt>Stack Viewer</dt><dd><p>Show the stack traceback of the last exception in a tree widget, with |
| 313 | access to locals and globals.</p> |
| 314 | </dd> |
| 315 | <dt>Auto-open Stack Viewer</dt><dd><p>Toggle automatically opening the stack viewer on an unhandled exception.</p> |
| 316 | </dd> |
Terry Jan Reedy | 5d46ab1 | 2015-09-20 19:57:13 -0400 | [diff] [blame] | 317 | </dl> |
| 318 | </div> |
| 319 | <div class="section" id="options-menu-shell-and-editor"> |
Terry Jan Reedy | db40cb5 | 2018-10-28 01:21:36 -0400 | [diff] [blame] | 320 | <h3>Options menu (Shell and Editor)<a class="headerlink" href="#options-menu-shell-and-editor" title="Permalink to this headline">¶</a></h3> |
Tal Einat | 580bdb0 | 2019-09-03 23:52:58 +0300 | [diff] [blame] | 321 | <dl class="simple"> |
| 322 | <dt>Configure IDLE</dt><dd><p>Open a configuration dialog and change preferences for the following: |
Terry Jan Reedy | 93f3542 | 2015-10-13 22:03:51 -0400 | [diff] [blame] | 323 | fonts, indentation, keybindings, text color themes, startup windows and |
Terry Jan Reedy | 1407029 | 2019-08-04 16:45:15 -0400 | [diff] [blame] | 324 | size, additional help sources, and extensions. On macOS, open the |
Terry Jan Reedy | 292cd6e | 2018-12-20 06:06:29 -0500 | [diff] [blame] | 325 | configuration dialog by selecting Preferences in the application |
Terry Jan Reedy | 1407029 | 2019-08-04 16:45:15 -0400 | [diff] [blame] | 326 | menu. For more details, see |
Tal Einat | 580bdb0 | 2019-09-03 23:52:58 +0300 | [diff] [blame] | 327 | <a class="reference internal" href="#preferences"><span class="std std-ref">Setting preferences</span></a> under Help and preferences.</p> |
| 328 | </dd> |
Terry Jan Reedy | 1407029 | 2019-08-04 16:45:15 -0400 | [diff] [blame] | 329 | </dl> |
| 330 | <p>Most configuration options apply to all windows or all future windows. |
| 331 | The option items below only apply to the active window.</p> |
Tal Einat | 580bdb0 | 2019-09-03 23:52:58 +0300 | [diff] [blame] | 332 | <dl class="simple"> |
| 333 | <dt>Show/Hide Code Context (Editor Window only)</dt><dd><p>Open a pane at the top of the edit window which shows the block context |
Cheryl Sabella | 01421be | 2018-12-20 00:38:54 -0500 | [diff] [blame] | 334 | of the code which has scrolled above the top of the window. See |
Terry Jan Reedy | 1407029 | 2019-08-04 16:45:15 -0400 | [diff] [blame] | 335 | <a class="reference internal" href="#code-context"><span class="std std-ref">Code Context</span></a> in the Editing and Navigation section |
Tal Einat | 580bdb0 | 2019-09-03 23:52:58 +0300 | [diff] [blame] | 336 | below.</p> |
| 337 | </dd> |
| 338 | <dt>Show/Hide Line Numbers (Editor Window only)</dt><dd><p>Open a column to the left of the edit window which shows the number |
Terry Jan Reedy | 1407029 | 2019-08-04 16:45:15 -0400 | [diff] [blame] | 339 | of each line of text. The default is off, which may be changed in the |
Tal Einat | 580bdb0 | 2019-09-03 23:52:58 +0300 | [diff] [blame] | 340 | preferences (see <a class="reference internal" href="#preferences"><span class="std std-ref">Setting preferences</span></a>).</p> |
| 341 | </dd> |
| 342 | <dt>Zoom/Restore Height</dt><dd><p>Toggles the window between normal size and maximum height. The initial size |
Terry Jan Reedy | df9b032 | 2019-05-27 19:16:46 -0400 | [diff] [blame] | 343 | defaults to 40 lines by 80 chars unless changed on the General tab of the |
Tal Einat | 5bff3c8 | 2019-06-17 22:41:00 +0300 | [diff] [blame] | 344 | Configure IDLE dialog. The maximum height for a screen is determined by |
| 345 | momentarily maximizing a window the first time one is zoomed on the screen. |
Terry Jan Reedy | 1407029 | 2019-08-04 16:45:15 -0400 | [diff] [blame] | 346 | Changing screen settings may invalidate the saved height. This toggle has |
Tal Einat | 580bdb0 | 2019-09-03 23:52:58 +0300 | [diff] [blame] | 347 | no effect when a window is maximized.</p> |
| 348 | </dd> |
Terry Jan Reedy | 5d46ab1 | 2015-09-20 19:57:13 -0400 | [diff] [blame] | 349 | </dl> |
| 350 | </div> |
| 351 | <div class="section" id="window-menu-shell-and-editor"> |
Terry Jan Reedy | db40cb5 | 2018-10-28 01:21:36 -0400 | [diff] [blame] | 352 | <h3>Window menu (Shell and Editor)<a class="headerlink" href="#window-menu-shell-and-editor" title="Permalink to this headline">¶</a></h3> |
Cheryl Sabella | c0381aa | 2018-12-28 15:11:30 -0500 | [diff] [blame] | 353 | <p>Lists the names of all open windows; select one to bring it to the foreground |
| 354 | (deiconifying it if necessary).</p> |
Terry Jan Reedy | 5d46ab1 | 2015-09-20 19:57:13 -0400 | [diff] [blame] | 355 | </div> |
| 356 | <div class="section" id="help-menu-shell-and-editor"> |
Terry Jan Reedy | db40cb5 | 2018-10-28 01:21:36 -0400 | [diff] [blame] | 357 | <h3>Help menu (Shell and Editor)<a class="headerlink" href="#help-menu-shell-and-editor" title="Permalink to this headline">¶</a></h3> |
Tal Einat | 580bdb0 | 2019-09-03 23:52:58 +0300 | [diff] [blame] | 358 | <dl class="simple"> |
| 359 | <dt>About IDLE</dt><dd><p>Display version, copyright, license, credits, and more.</p> |
| 360 | </dd> |
| 361 | <dt>IDLE Help</dt><dd><p>Display this IDLE document, detailing the menu options, basic editing and |
| 362 | navigation, and other tips.</p> |
| 363 | </dd> |
| 364 | <dt>Python Docs</dt><dd><p>Access local Python documentation, if installed, or start a web browser |
| 365 | and open docs.python.org showing the latest Python documentation.</p> |
| 366 | </dd> |
| 367 | <dt>Turtle Demo</dt><dd><p>Run the turtledemo module with example Python code and turtle drawings.</p> |
| 368 | </dd> |
Terry Jan Reedy | 5d46ab1 | 2015-09-20 19:57:13 -0400 | [diff] [blame] | 369 | </dl> |
| 370 | <p>Additional help sources may be added here with the Configure IDLE dialog under |
Cheryl Sabella | 01421be | 2018-12-20 00:38:54 -0500 | [diff] [blame] | 371 | the General tab. See the <a class="reference internal" href="#help-sources"><span class="std std-ref">Help sources</span></a> subsection below |
| 372 | for more on Help menu choices.</p> |
Terry Jan Reedy | 5d46ab1 | 2015-09-20 19:57:13 -0400 | [diff] [blame] | 373 | </div> |
| 374 | <div class="section" id="context-menus"> |
Terry Jan Reedy | db40cb5 | 2018-10-28 01:21:36 -0400 | [diff] [blame] | 375 | <span id="index-4"></span><h3>Context Menus<a class="headerlink" href="#context-menus" title="Permalink to this headline">¶</a></h3> |
Terry Jan Reedy | b65413b | 2018-11-15 13:15:13 -0500 | [diff] [blame] | 376 | <p>Open a context menu by right-clicking in a window (Control-click on macOS). |
Terry Jan Reedy | 5d46ab1 | 2015-09-20 19:57:13 -0400 | [diff] [blame] | 377 | Context menus have the standard clipboard functions also on the Edit menu.</p> |
Tal Einat | 580bdb0 | 2019-09-03 23:52:58 +0300 | [diff] [blame] | 378 | <dl class="simple"> |
| 379 | <dt>Cut</dt><dd><p>Copy selection into the system-wide clipboard; then delete the selection.</p> |
| 380 | </dd> |
| 381 | <dt>Copy</dt><dd><p>Copy selection into the system-wide clipboard.</p> |
| 382 | </dd> |
| 383 | <dt>Paste</dt><dd><p>Insert contents of the system-wide clipboard into the current window.</p> |
| 384 | </dd> |
Terry Jan Reedy | 5d46ab1 | 2015-09-20 19:57:13 -0400 | [diff] [blame] | 385 | </dl> |
| 386 | <p>Editor windows also have breakpoint functions. Lines with a breakpoint set are |
| 387 | specially marked. Breakpoints only have an effect when running under the |
Tal Einat | d6c08db | 2020-01-06 01:51:48 +0200 | [diff] [blame] | 388 | debugger. Breakpoints for a file are saved in the user’s <code class="docutils literal notranslate"><span class="pre">.idlerc</span></code> |
| 389 | directory.</p> |
Tal Einat | 580bdb0 | 2019-09-03 23:52:58 +0300 | [diff] [blame] | 390 | <dl class="simple"> |
| 391 | <dt>Set Breakpoint</dt><dd><p>Set a breakpoint on the current line.</p> |
| 392 | </dd> |
| 393 | <dt>Clear Breakpoint</dt><dd><p>Clear the breakpoint on that line.</p> |
| 394 | </dd> |
Terry Jan Reedy | 5d46ab1 | 2015-09-20 19:57:13 -0400 | [diff] [blame] | 395 | </dl> |
Terry Jan Reedy | 68d6dc0 | 2018-10-28 12:44:44 -0400 | [diff] [blame] | 396 | <p>Shell and Output windows also have the following.</p> |
Tal Einat | 580bdb0 | 2019-09-03 23:52:58 +0300 | [diff] [blame] | 397 | <dl class="simple"> |
| 398 | <dt>Go to file/line</dt><dd><p>Same as in Debug menu.</p> |
| 399 | </dd> |
Terry Jan Reedy | 5d46ab1 | 2015-09-20 19:57:13 -0400 | [diff] [blame] | 400 | </dl> |
Terry Jan Reedy | 55d0351 | 2019-04-26 23:22:36 -0400 | [diff] [blame] | 401 | <p>The Shell window also has an output squeezing facility explained in the <em>Python |
| 402 | Shell window</em> subsection below.</p> |
Tal Einat | 580bdb0 | 2019-09-03 23:52:58 +0300 | [diff] [blame] | 403 | <dl class="simple"> |
| 404 | <dt>Squeeze</dt><dd><p>If the cursor is over an output line, squeeze all the output between |
| 405 | the code above and the prompt below down to a ‘Squeezed text’ label.</p> |
| 406 | </dd> |
Terry Jan Reedy | 68d6dc0 | 2018-10-28 12:44:44 -0400 | [diff] [blame] | 407 | </dl> |
Terry Jan Reedy | 5d46ab1 | 2015-09-20 19:57:13 -0400 | [diff] [blame] | 408 | </div> |
| 409 | </div> |
| 410 | <div class="section" id="editing-and-navigation"> |
Cheryl Sabella | 01421be | 2018-12-20 00:38:54 -0500 | [diff] [blame] | 411 | <span id="id2"></span><h2>Editing and navigation<a class="headerlink" href="#editing-and-navigation" title="Permalink to this headline">¶</a></h2> |
Terry Jan Reedy | ea9c8bd | 2018-10-28 20:42:18 -0400 | [diff] [blame] | 412 | <div class="section" id="editor-windows"> |
| 413 | <h3>Editor windows<a class="headerlink" href="#editor-windows" title="Permalink to this headline">¶</a></h3> |
| 414 | <p>IDLE may open editor windows when it starts, depending on settings |
| 415 | and how you start IDLE. Thereafter, use the File menu. There can be only |
| 416 | one open editor window for a given file.</p> |
| 417 | <p>The title bar contains the name of the file, the full path, and the version |
| 418 | of Python and IDLE running the window. The status bar contains the line |
| 419 | number (‘Ln’) and column number (‘Col’). Line numbers start with 1; |
| 420 | column numbers with 0.</p> |
| 421 | <p>IDLE assumes that files with a known .py* extension contain Python code |
| 422 | and that other files do not. Run Python code with the Run menu.</p> |
| 423 | </div> |
| 424 | <div class="section" id="key-bindings"> |
| 425 | <h3>Key bindings<a class="headerlink" href="#key-bindings" title="Permalink to this headline">¶</a></h3> |
Terry Jan Reedy | af4b013 | 2018-06-10 15:48:41 -0400 | [diff] [blame] | 426 | <p>In this section, ‘C’ refers to the <kbd class="kbd docutils literal notranslate">Control</kbd> key on Windows and Unix and |
Terry Jan Reedy | b65413b | 2018-11-15 13:15:13 -0500 | [diff] [blame] | 427 | the <kbd class="kbd docutils literal notranslate">Command</kbd> key on macOS.</p> |
Terry Jan Reedy | 5d46ab1 | 2015-09-20 19:57:13 -0400 | [diff] [blame] | 428 | <ul> |
Tal Einat | 580bdb0 | 2019-09-03 23:52:58 +0300 | [diff] [blame] | 429 | <li><p><kbd class="kbd docutils literal notranslate">Backspace</kbd> deletes to the left; <kbd class="kbd docutils literal notranslate">Del</kbd> deletes to the right</p></li> |
Terry Jan Reedy | a460d45 | 2020-10-20 20:56:01 -0400 | [diff] [blame] | 430 | <li><p><kbd class="kbd docutils literal notranslate"><kbd class="kbd docutils literal notranslate">C</kbd>-<kbd class="kbd docutils literal notranslate">Backspace</kbd></kbd> delete word left; <kbd class="kbd docutils literal notranslate"><kbd class="kbd docutils literal notranslate">C</kbd>-<kbd class="kbd docutils literal notranslate">Del</kbd></kbd> delete word to the right</p></li> |
| 431 | <li><p>Arrow keys and <kbd class="kbd docutils literal notranslate"><kbd class="kbd docutils literal notranslate">Page</kbd> <kbd class="kbd docutils literal notranslate">Up</kbd></kbd>/<kbd class="kbd docutils literal notranslate"><kbd class="kbd docutils literal notranslate">Page</kbd> <kbd class="kbd docutils literal notranslate">Down</kbd></kbd> to move around</p></li> |
| 432 | <li><p><kbd class="kbd docutils literal notranslate"><kbd class="kbd docutils literal notranslate">C</kbd>-<kbd class="kbd docutils literal notranslate">LeftArrow</kbd></kbd> and <kbd class="kbd docutils literal notranslate"><kbd class="kbd docutils literal notranslate">C</kbd>-<kbd class="kbd docutils literal notranslate">RightArrow</kbd></kbd> moves by words</p></li> |
Tal Einat | 580bdb0 | 2019-09-03 23:52:58 +0300 | [diff] [blame] | 433 | <li><p><kbd class="kbd docutils literal notranslate">Home</kbd>/<kbd class="kbd docutils literal notranslate">End</kbd> go to begin/end of line</p></li> |
Terry Jan Reedy | a460d45 | 2020-10-20 20:56:01 -0400 | [diff] [blame] | 434 | <li><p><kbd class="kbd docutils literal notranslate"><kbd class="kbd docutils literal notranslate">C</kbd>-<kbd class="kbd docutils literal notranslate">Home</kbd></kbd>/<kbd class="kbd docutils literal notranslate"><kbd class="kbd docutils literal notranslate">C</kbd>-<kbd class="kbd docutils literal notranslate">End</kbd></kbd> go to begin/end of file</p></li> |
Tal Einat | 580bdb0 | 2019-09-03 23:52:58 +0300 | [diff] [blame] | 435 | <li><p>Some useful Emacs bindings are inherited from Tcl/Tk:</p> |
Terry Jan Reedy | 5d46ab1 | 2015-09-20 19:57:13 -0400 | [diff] [blame] | 436 | <blockquote> |
| 437 | <div><ul class="simple"> |
Terry Jan Reedy | a460d45 | 2020-10-20 20:56:01 -0400 | [diff] [blame] | 438 | <li><p><kbd class="kbd docutils literal notranslate"><kbd class="kbd docutils literal notranslate">C</kbd>-<kbd class="kbd docutils literal notranslate">a</kbd></kbd> beginning of line</p></li> |
| 439 | <li><p><kbd class="kbd docutils literal notranslate"><kbd class="kbd docutils literal notranslate">C</kbd>-<kbd class="kbd docutils literal notranslate">e</kbd></kbd> end of line</p></li> |
| 440 | <li><p><kbd class="kbd docutils literal notranslate"><kbd class="kbd docutils literal notranslate">C</kbd>-<kbd class="kbd docutils literal notranslate">k</kbd></kbd> kill line (but doesn’t put it in clipboard)</p></li> |
| 441 | <li><p><kbd class="kbd docutils literal notranslate"><kbd class="kbd docutils literal notranslate">C</kbd>-<kbd class="kbd docutils literal notranslate">l</kbd></kbd> center window around the insertion point</p></li> |
| 442 | <li><p><kbd class="kbd docutils literal notranslate"><kbd class="kbd docutils literal notranslate">C</kbd>-<kbd class="kbd docutils literal notranslate">b</kbd></kbd> go backward one character without deleting (usually you can |
Tal Einat | 580bdb0 | 2019-09-03 23:52:58 +0300 | [diff] [blame] | 443 | also use the cursor key for this)</p></li> |
Terry Jan Reedy | a460d45 | 2020-10-20 20:56:01 -0400 | [diff] [blame] | 444 | <li><p><kbd class="kbd docutils literal notranslate"><kbd class="kbd docutils literal notranslate">C</kbd>-<kbd class="kbd docutils literal notranslate">f</kbd></kbd> go forward one character without deleting (usually you can |
Tal Einat | 580bdb0 | 2019-09-03 23:52:58 +0300 | [diff] [blame] | 445 | also use the cursor key for this)</p></li> |
Terry Jan Reedy | a460d45 | 2020-10-20 20:56:01 -0400 | [diff] [blame] | 446 | <li><p><kbd class="kbd docutils literal notranslate"><kbd class="kbd docutils literal notranslate">C</kbd>-<kbd class="kbd docutils literal notranslate">p</kbd></kbd> go up one line (usually you can also use the cursor key for |
Tal Einat | 580bdb0 | 2019-09-03 23:52:58 +0300 | [diff] [blame] | 447 | this)</p></li> |
Terry Jan Reedy | a460d45 | 2020-10-20 20:56:01 -0400 | [diff] [blame] | 448 | <li><p><kbd class="kbd docutils literal notranslate"><kbd class="kbd docutils literal notranslate">C</kbd>-<kbd class="kbd docutils literal notranslate">d</kbd></kbd> delete next character</p></li> |
Terry Jan Reedy | 5d46ab1 | 2015-09-20 19:57:13 -0400 | [diff] [blame] | 449 | </ul> |
| 450 | </div></blockquote> |
| 451 | </li> |
| 452 | </ul> |
Terry Jan Reedy | a460d45 | 2020-10-20 20:56:01 -0400 | [diff] [blame] | 453 | <p>Standard keybindings (like <kbd class="kbd docutils literal notranslate"><kbd class="kbd docutils literal notranslate">C</kbd>-<kbd class="kbd docutils literal notranslate">c</kbd></kbd> to copy and <kbd class="kbd docutils literal notranslate"><kbd class="kbd docutils literal notranslate">C</kbd>-<kbd class="kbd docutils literal notranslate">v</kbd></kbd> to paste) |
Terry Jan Reedy | 5d46ab1 | 2015-09-20 19:57:13 -0400 | [diff] [blame] | 454 | may work. Keybindings are selected in the Configure IDLE dialog.</p> |
Terry Jan Reedy | ea9c8bd | 2018-10-28 20:42:18 -0400 | [diff] [blame] | 455 | </div> |
Terry Jan Reedy | 5d46ab1 | 2015-09-20 19:57:13 -0400 | [diff] [blame] | 456 | <div class="section" id="automatic-indentation"> |
Terry Jan Reedy | db40cb5 | 2018-10-28 01:21:36 -0400 | [diff] [blame] | 457 | <h3>Automatic indentation<a class="headerlink" href="#automatic-indentation" title="Permalink to this headline">¶</a></h3> |
Terry Jan Reedy | 5d46ab1 | 2015-09-20 19:57:13 -0400 | [diff] [blame] | 458 | <p>After a block-opening statement, the next line is indented by 4 spaces (in the |
| 459 | Python Shell window by one tab). After certain keywords (break, return etc.) |
Terry Jan Reedy | af4b013 | 2018-06-10 15:48:41 -0400 | [diff] [blame] | 460 | the next line is dedented. In leading indentation, <kbd class="kbd docutils literal notranslate">Backspace</kbd> deletes up |
| 461 | to 4 spaces if they are there. <kbd class="kbd docutils literal notranslate">Tab</kbd> inserts spaces (in the Python |
terryjreedy | 188aedf | 2017-06-13 21:32:16 -0400 | [diff] [blame] | 462 | Shell window one tab), number depends on Indent width. Currently, tabs |
Terry Jan Reedy | 5d46ab1 | 2015-09-20 19:57:13 -0400 | [diff] [blame] | 463 | are restricted to four spaces due to Tcl/Tk limitations.</p> |
Terry Jan Reedy | 292cd6e | 2018-12-20 06:06:29 -0500 | [diff] [blame] | 464 | <p>See also the indent/dedent region commands on the |
| 465 | <a class="reference internal" href="#format-menu"><span class="std std-ref">Format menu</span></a>.</p> |
Terry Jan Reedy | 5d46ab1 | 2015-09-20 19:57:13 -0400 | [diff] [blame] | 466 | </div> |
| 467 | <div class="section" id="completions"> |
Cheryl Sabella | 01421be | 2018-12-20 00:38:54 -0500 | [diff] [blame] | 468 | <span id="id3"></span><h3>Completions<a class="headerlink" href="#completions" title="Permalink to this headline">¶</a></h3> |
Terry Jan Reedy | bce2eb4 | 2020-07-09 18:08:33 -0400 | [diff] [blame] | 469 | <p>Completions are supplied, when requested and available, for module |
| 470 | names, attributes of classes or functions, or filenames. Each request |
| 471 | method displays a completion box with existing names. (See tab |
| 472 | completions below for an exception.) For any box, change the name |
| 473 | being completed and the item highlighted in the box by |
| 474 | typing and deleting characters; by hitting <kbd class="kbd docutils literal notranslate">Up</kbd>, <kbd class="kbd docutils literal notranslate">Down</kbd>, |
| 475 | <kbd class="kbd docutils literal notranslate">PageUp</kbd>, <kbd class="kbd docutils literal notranslate">PageDown</kbd>, <kbd class="kbd docutils literal notranslate">Home</kbd>, and <kbd class="kbd docutils literal notranslate">End</kbd> keys; |
| 476 | and by a single click within the box. Close the box with <kbd class="kbd docutils literal notranslate">Escape</kbd>, |
| 477 | <kbd class="kbd docutils literal notranslate">Enter</kbd>, and double <kbd class="kbd docutils literal notranslate">Tab</kbd> keys or clicks outside the box. |
| 478 | A double click within the box selects and closes.</p> |
| 479 | <p>One way to open a box is to type a key character and wait for a |
| 480 | predefined interval. This defaults to 2 seconds; customize it |
| 481 | in the settings dialog. (To prevent auto popups, set the delay to a |
| 482 | large number of milliseconds, such as 100000000.) For imported module |
| 483 | names or class or function attributes, type ‘.’. |
| 484 | For filenames in the root directory, type <a class="reference internal" href="os.html#os.sep" title="os.sep"><code class="xref py py-data docutils literal notranslate"><span class="pre">os.sep</span></code></a> or |
Terry Jan Reedy | 4712471 | 2020-09-09 18:53:18 -0400 | [diff] [blame] | 485 | <a class="reference internal" href="os.html#os.altsep" title="os.altsep"><code class="xref py py-data docutils literal notranslate"><span class="pre">os.altsep</span></code></a> immediately after an opening quote. (On Windows, |
Terry Jan Reedy | bce2eb4 | 2020-07-09 18:08:33 -0400 | [diff] [blame] | 486 | one can specify a drive first.) Move into subdirectories by typing a |
| 487 | directory name and a separator.</p> |
Terry Jan Reedy | 4712471 | 2020-09-09 18:53:18 -0400 | [diff] [blame] | 488 | <p>Instead of waiting, or after a box is closed, open a completion box |
Terry Jan Reedy | bce2eb4 | 2020-07-09 18:08:33 -0400 | [diff] [blame] | 489 | immediately with Show Completions on the Edit menu. The default hot |
Terry Jan Reedy | a460d45 | 2020-10-20 20:56:01 -0400 | [diff] [blame] | 490 | key is <kbd class="kbd docutils literal notranslate"><kbd class="kbd docutils literal notranslate">C</kbd>-<kbd class="kbd docutils literal notranslate">space</kbd></kbd>. If one types a prefix for the desired name |
Terry Jan Reedy | 4712471 | 2020-09-09 18:53:18 -0400 | [diff] [blame] | 491 | before opening the box, the first match or near miss is made visible. |
Terry Jan Reedy | bce2eb4 | 2020-07-09 18:08:33 -0400 | [diff] [blame] | 492 | The result is the same as if one enters a prefix |
| 493 | after the box is displayed. Show Completions after a quote completes |
| 494 | filenames in the current directory instead of a root directory.</p> |
| 495 | <p>Hitting <kbd class="kbd docutils literal notranslate">Tab</kbd> after a prefix usually has the same effect as Show |
| 496 | Completions. (With no prefix, it indents.) However, if there is only |
| 497 | one match to the prefix, that match is immediately added to the editor |
| 498 | text without opening a box.</p> |
| 499 | <p>Invoking ‘Show Completions’, or hitting <kbd class="kbd docutils literal notranslate">Tab</kbd> after a prefix, |
| 500 | outside of a string and without a preceding ‘.’ opens a box with |
| 501 | keywords, builtin names, and available module-level names.</p> |
| 502 | <p>When editing code in an editor (as oppose to Shell), increase the |
| 503 | available module-level names by running your code |
| 504 | and not restarting the Shell thereafter. This is especially useful |
| 505 | after adding imports at the top of a file. This also increases |
| 506 | possible attribute completions.</p> |
| 507 | <p>Completion boxes intially exclude names beginning with ‘_’ or, for |
| 508 | modules, not included in ‘__all__’. The hidden names can be accessed |
| 509 | by typing ‘_’ after ‘.’, either before or after the box is opened.</p> |
Terry Jan Reedy | 37f8135 | 2015-09-29 01:55:57 -0400 | [diff] [blame] | 510 | </div> |
| 511 | <div class="section" id="calltips"> |
Cheryl Sabella | 01421be | 2018-12-20 00:38:54 -0500 | [diff] [blame] | 512 | <span id="id4"></span><h3>Calltips<a class="headerlink" href="#calltips" title="Permalink to this headline">¶</a></h3> |
Terry Jan Reedy | 947adca | 2020-09-22 13:21:58 -0400 | [diff] [blame] | 513 | <p>A calltip is shown automatically when one types <kbd class="kbd docutils literal notranslate">(</kbd> after the name |
| 514 | of an <em>accessible</em> function. A function name expression may include |
| 515 | dots and subscripts. A calltip remains until it is clicked, the cursor |
| 516 | is moved out of the argument area, or <kbd class="kbd docutils literal notranslate">)</kbd> is typed. Whenever the |
| 517 | cursor is in the argument part of a definition, select Edit and “Show |
| 518 | Call Tip” on the menu or enter its shortcut to display a calltip.</p> |
| 519 | <p>The calltip consists of the function’s signature and docstring up to |
| 520 | the latter’s first blank line or the fifth non-blank line. (Some builtin |
| 521 | functions lack an accessible signature.) A ‘/’ or ‘*’ in the signature |
| 522 | indicates that the preceding or following arguments are passed by |
| 523 | position or name (keyword) only. Details are subject to change.</p> |
| 524 | <p>In Shell, the accessible functions depends on what modules have been |
| 525 | imported into the user process, including those imported by Idle itself, |
| 526 | and which definitions have been run, all since the last restart.</p> |
Terry Jan Reedy | af4b013 | 2018-06-10 15:48:41 -0400 | [diff] [blame] | 527 | <p>For example, restart the Shell and enter <code class="docutils literal notranslate"><span class="pre">itertools.count(</span></code>. A calltip |
Terry Jan Reedy | 947adca | 2020-09-22 13:21:58 -0400 | [diff] [blame] | 528 | appears because Idle imports itertools into the user process for its own |
| 529 | use. (This could change.) Enter <code class="docutils literal notranslate"><span class="pre">turtle.write(</span></code> and nothing appears. |
| 530 | Idle does not itself import turtle. The menu entry and shortcut also do |
| 531 | nothing. Enter <code class="docutils literal notranslate"><span class="pre">import</span> <span class="pre">turtle</span></code>. Thereafter, <code class="docutils literal notranslate"><span class="pre">turtle.write(</span></code> |
| 532 | will display a calltip.</p> |
| 533 | <p>In an editor, import statements have no effect until one runs the file. |
| 534 | One might want to run a file after writing import statements, after |
| 535 | adding function definitions, or after opening an existing file.</p> |
Terry Jan Reedy | 5d46ab1 | 2015-09-20 19:57:13 -0400 | [diff] [blame] | 536 | </div> |
Cheryl Sabella | 01421be | 2018-12-20 00:38:54 -0500 | [diff] [blame] | 537 | <div class="section" id="code-context"> |
| 538 | <span id="id5"></span><h3>Code Context<a class="headerlink" href="#code-context" title="Permalink to this headline">¶</a></h3> |
| 539 | <p>Within an editor window containing Python code, code context can be toggled |
| 540 | in order to show or hide a pane at the top of the window. When shown, this |
| 541 | pane freezes the opening lines for block code, such as those beginning with |
| 542 | <code class="docutils literal notranslate"><span class="pre">class</span></code>, <code class="docutils literal notranslate"><span class="pre">def</span></code>, or <code class="docutils literal notranslate"><span class="pre">if</span></code> keywords, that would have otherwise scrolled |
| 543 | out of view. The size of the pane will be expanded and contracted as needed |
| 544 | to show the all current levels of context, up to the maximum number of |
| 545 | lines defined in the Configure IDLE dialog (which defaults to 15). If there |
| 546 | are no current context lines and the feature is toggled on, a single blank |
| 547 | line will display. Clicking on a line in the context pane will move that |
| 548 | line to the top of the editor.</p> |
| 549 | <p>The text and background colors for the context pane can be configured under |
| 550 | the Highlights tab in the Configure IDLE dialog.</p> |
| 551 | </div> |
Terry Jan Reedy | 5d46ab1 | 2015-09-20 19:57:13 -0400 | [diff] [blame] | 552 | <div class="section" id="python-shell-window"> |
Terry Jan Reedy | db40cb5 | 2018-10-28 01:21:36 -0400 | [diff] [blame] | 553 | <h3>Python Shell window<a class="headerlink" href="#python-shell-window" title="Permalink to this headline">¶</a></h3> |
Terry Jan Reedy | 75d9d59 | 2018-11-06 12:37:36 -0500 | [diff] [blame] | 554 | <p>With IDLE’s Shell, one enters, edits, and recalls complete statements. |
| 555 | Most consoles and terminals only work with a single physical line at a time.</p> |
| 556 | <p>When one pastes code into Shell, it is not compiled and possibly executed |
| 557 | until one hits <kbd class="kbd docutils literal notranslate">Return</kbd>. One may edit pasted code first. |
| 558 | If one pastes more that one statement into Shell, the result will be a |
| 559 | <a class="reference internal" href="exceptions.html#SyntaxError" title="SyntaxError"><code class="xref py py-exc docutils literal notranslate"><span class="pre">SyntaxError</span></code></a> when multiple statements are compiled as if they were one.</p> |
| 560 | <p>The editing features described in previous subsections work when entering |
| 561 | code interactively. IDLE’s Shell window also responds to the following keys.</p> |
Terry Jan Reedy | 5d46ab1 | 2015-09-20 19:57:13 -0400 | [diff] [blame] | 562 | <ul> |
Terry Jan Reedy | a460d45 | 2020-10-20 20:56:01 -0400 | [diff] [blame] | 563 | <li><p><kbd class="kbd docutils literal notranslate"><kbd class="kbd docutils literal notranslate">C</kbd>-<kbd class="kbd docutils literal notranslate">c</kbd></kbd> interrupts executing command</p></li> |
| 564 | <li><p><kbd class="kbd docutils literal notranslate"><kbd class="kbd docutils literal notranslate">C</kbd>-<kbd class="kbd docutils literal notranslate">d</kbd></kbd> sends end-of-file; closes window if typed at a <code class="docutils literal notranslate"><span class="pre">>>></span></code> prompt</p></li> |
| 565 | <li><p><kbd class="kbd docutils literal notranslate"><kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">/</kbd></kbd> (Expand word) is also useful to reduce typing</p> |
Terry Jan Reedy | 5d46ab1 | 2015-09-20 19:57:13 -0400 | [diff] [blame] | 566 | <p>Command history</p> |
| 567 | <ul class="simple"> |
Terry Jan Reedy | a460d45 | 2020-10-20 20:56:01 -0400 | [diff] [blame] | 568 | <li><p><kbd class="kbd docutils literal notranslate"><kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">p</kbd></kbd> retrieves previous command matching what you have typed. On |
| 569 | macOS use <kbd class="kbd docutils literal notranslate"><kbd class="kbd docutils literal notranslate">C</kbd>-<kbd class="kbd docutils literal notranslate">p</kbd></kbd>.</p></li> |
| 570 | <li><p><kbd class="kbd docutils literal notranslate"><kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">n</kbd></kbd> retrieves next. On macOS use <kbd class="kbd docutils literal notranslate"><kbd class="kbd docutils literal notranslate">C</kbd>-<kbd class="kbd docutils literal notranslate">n</kbd></kbd>.</p></li> |
Tal Einat | 580bdb0 | 2019-09-03 23:52:58 +0300 | [diff] [blame] | 571 | <li><p><kbd class="kbd docutils literal notranslate">Return</kbd> while on any previous command retrieves that command</p></li> |
Terry Jan Reedy | 5d46ab1 | 2015-09-20 19:57:13 -0400 | [diff] [blame] | 572 | </ul> |
| 573 | </li> |
| 574 | </ul> |
| 575 | </div> |
Terry Jan Reedy | ce021db | 2015-09-24 23:18:57 -0400 | [diff] [blame] | 576 | <div class="section" id="text-colors"> |
Terry Jan Reedy | db40cb5 | 2018-10-28 01:21:36 -0400 | [diff] [blame] | 577 | <h3>Text colors<a class="headerlink" href="#text-colors" title="Permalink to this headline">¶</a></h3> |
Terry Jan Reedy | ce021db | 2015-09-24 23:18:57 -0400 | [diff] [blame] | 578 | <p>Idle defaults to black on white text, but colors text with special meanings. |
| 579 | For the shell, these are shell output, shell error, user output, and |
| 580 | user error. For Python code, at the shell prompt or in an editor, these are |
Terry Jan Reedy | af4b013 | 2018-06-10 15:48:41 -0400 | [diff] [blame] | 581 | keywords, builtin class and function names, names following <code class="docutils literal notranslate"><span class="pre">class</span></code> and |
| 582 | <code class="docutils literal notranslate"><span class="pre">def</span></code>, strings, and comments. For any text window, these are the cursor (when |
Terry Jan Reedy | ce021db | 2015-09-24 23:18:57 -0400 | [diff] [blame] | 583 | present), found text (when possible), and selected text.</p> |
| 584 | <p>Text coloring is done in the background, so uncolorized text is occasionally |
| 585 | visible. To change the color scheme, use the Configure IDLE dialog |
| 586 | Highlighting tab. The marking of debugger breakpoint lines in the editor and |
| 587 | text in popups and dialogs is not user-configurable.</p> |
Terry Jan Reedy | 5d46ab1 | 2015-09-20 19:57:13 -0400 | [diff] [blame] | 588 | </div> |
Terry Jan Reedy | 5d46ab1 | 2015-09-20 19:57:13 -0400 | [diff] [blame] | 589 | </div> |
Terry Jan Reedy | 0053c47 | 2015-09-24 03:09:43 -0400 | [diff] [blame] | 590 | <div class="section" id="startup-and-code-execution"> |
Terry Jan Reedy | db40cb5 | 2018-10-28 01:21:36 -0400 | [diff] [blame] | 591 | <h2>Startup and code execution<a class="headerlink" href="#startup-and-code-execution" title="Permalink to this headline">¶</a></h2> |
Terry Jan Reedy | af4b013 | 2018-06-10 15:48:41 -0400 | [diff] [blame] | 592 | <p>Upon startup with the <code class="docutils literal notranslate"><span class="pre">-s</span></code> option, IDLE will execute the file referenced by |
| 593 | the environment variables <span class="target" id="index-5"></span><code class="xref std std-envvar docutils literal notranslate"><span class="pre">IDLESTARTUP</span></code> or <span class="target" id="index-6"></span><a class="reference internal" href="../using/cmdline.html#envvar-PYTHONSTARTUP"><code class="xref std std-envvar docutils literal notranslate"><span class="pre">PYTHONSTARTUP</span></code></a>. |
| 594 | IDLE first checks for <code class="docutils literal notranslate"><span class="pre">IDLESTARTUP</span></code>; if <code class="docutils literal notranslate"><span class="pre">IDLESTARTUP</span></code> is present the file |
| 595 | referenced is run. If <code class="docutils literal notranslate"><span class="pre">IDLESTARTUP</span></code> is not present, IDLE checks for |
| 596 | <code class="docutils literal notranslate"><span class="pre">PYTHONSTARTUP</span></code>. Files referenced by these environment variables are |
Terry Jan Reedy | 5d46ab1 | 2015-09-20 19:57:13 -0400 | [diff] [blame] | 597 | convenient places to store functions that are used frequently from the IDLE |
| 598 | shell, or for executing import statements to import common modules.</p> |
Terry Jan Reedy | af4b013 | 2018-06-10 15:48:41 -0400 | [diff] [blame] | 599 | <p>In addition, <code class="docutils literal notranslate"><span class="pre">Tk</span></code> also loads a startup file if it is present. Note that the |
| 600 | Tk file is loaded unconditionally. This additional file is <code class="docutils literal notranslate"><span class="pre">.Idle.py</span></code> and is |
| 601 | looked for in the user’s home directory. Statements in this file will be |
Terry Jan Reedy | 5d46ab1 | 2015-09-20 19:57:13 -0400 | [diff] [blame] | 602 | executed in the Tk namespace, so this file is not useful for importing |
Terry Jan Reedy | af4b013 | 2018-06-10 15:48:41 -0400 | [diff] [blame] | 603 | functions to be used from IDLE’s Python shell.</p> |
Terry Jan Reedy | 5d46ab1 | 2015-09-20 19:57:13 -0400 | [diff] [blame] | 604 | <div class="section" id="command-line-usage"> |
Terry Jan Reedy | db40cb5 | 2018-10-28 01:21:36 -0400 | [diff] [blame] | 605 | <h3>Command line usage<a class="headerlink" href="#command-line-usage" title="Permalink to this headline">¶</a></h3> |
Terry Jan Reedy | af4b013 | 2018-06-10 15:48:41 -0400 | [diff] [blame] | 606 | <div class="highlight-none notranslate"><div class="highlight"><pre><span></span>idle.py [-c command] [-d] [-e] [-h] [-i] [-r file] [-s] [-t title] [-] [arg] ... |
Terry Jan Reedy | 5d46ab1 | 2015-09-20 19:57:13 -0400 | [diff] [blame] | 607 | |
Terry Jan Reedy | 968e285 | 2015-09-23 03:52:23 -0400 | [diff] [blame] | 608 | -c command run command in the shell window |
| 609 | -d enable debugger and open shell window |
| 610 | -e open editor window |
Terry Jan Reedy | 3399e1e | 2016-08-30 16:58:01 -0400 | [diff] [blame] | 611 | -h print help message with legal combinations and exit |
Terry Jan Reedy | 968e285 | 2015-09-23 03:52:23 -0400 | [diff] [blame] | 612 | -i open shell window |
| 613 | -r file run file in shell window |
| 614 | -s run $IDLESTARTUP or $PYTHONSTARTUP first, in shell window |
Terry Jan Reedy | 5d46ab1 | 2015-09-20 19:57:13 -0400 | [diff] [blame] | 615 | -t title set title of shell window |
Terry Jan Reedy | 968e285 | 2015-09-23 03:52:23 -0400 | [diff] [blame] | 616 | - run stdin in shell (- must be last option before args) |
Terry Jan Reedy | 5d46ab1 | 2015-09-20 19:57:13 -0400 | [diff] [blame] | 617 | </pre></div> |
| 618 | </div> |
| 619 | <p>If there are arguments:</p> |
Terry Jan Reedy | 968e285 | 2015-09-23 03:52:23 -0400 | [diff] [blame] | 620 | <ul class="simple"> |
Tal Einat | 580bdb0 | 2019-09-03 23:52:58 +0300 | [diff] [blame] | 621 | <li><p>If <code class="docutils literal notranslate"><span class="pre">-</span></code>, <code class="docutils literal notranslate"><span class="pre">-c</span></code>, or <code class="docutils literal notranslate"><span class="pre">r</span></code> is used, all arguments are placed in |
Terry Jan Reedy | af4b013 | 2018-06-10 15:48:41 -0400 | [diff] [blame] | 622 | <code class="docutils literal notranslate"><span class="pre">sys.argv[1:...]</span></code> and <code class="docutils literal notranslate"><span class="pre">sys.argv[0]</span></code> is set to <code class="docutils literal notranslate"><span class="pre">''</span></code>, <code class="docutils literal notranslate"><span class="pre">'-c'</span></code>, |
| 623 | or <code class="docutils literal notranslate"><span class="pre">'-r'</span></code>. No editor window is opened, even if that is the default |
Tal Einat | 580bdb0 | 2019-09-03 23:52:58 +0300 | [diff] [blame] | 624 | set in the Options dialog.</p></li> |
| 625 | <li><p>Otherwise, arguments are files opened for editing and |
| 626 | <code class="docutils literal notranslate"><span class="pre">sys.argv</span></code> reflects the arguments passed to IDLE itself.</p></li> |
Terry Jan Reedy | 968e285 | 2015-09-23 03:52:23 -0400 | [diff] [blame] | 627 | </ul> |
Terry Jan Reedy | 5d46ab1 | 2015-09-20 19:57:13 -0400 | [diff] [blame] | 628 | </div> |
terryjreedy | 188aedf | 2017-06-13 21:32:16 -0400 | [diff] [blame] | 629 | <div class="section" id="startup-failure"> |
Terry Jan Reedy | db40cb5 | 2018-10-28 01:21:36 -0400 | [diff] [blame] | 630 | <h3>Startup failure<a class="headerlink" href="#startup-failure" title="Permalink to this headline">¶</a></h3> |
terryjreedy | 188aedf | 2017-06-13 21:32:16 -0400 | [diff] [blame] | 631 | <p>IDLE uses a socket to communicate between the IDLE GUI process and the user |
| 632 | code execution process. A connection must be established whenever the Shell |
| 633 | starts or restarts. (The latter is indicated by a divider line that says |
Terry Jan Reedy | af4b013 | 2018-06-10 15:48:41 -0400 | [diff] [blame] | 634 | ‘RESTART’). If the user process fails to connect to the GUI process, it |
Terry Jan Reedy | 1b4a9c7 | 2021-03-31 01:19:38 -0400 | [diff] [blame] | 635 | usually displays a <code class="docutils literal notranslate"><span class="pre">Tk</span></code> error box with a ‘cannot connect’ message |
| 636 | that directs the user here. It then exits.</p> |
| 637 | <p>One specific connection failure on Unix systems results from |
| 638 | misconfigured masquerading rules somewhere in a system’s network setup. |
| 639 | When IDLE is started from a terminal, one will see a message starting |
| 640 | with <code class="docutils literal notranslate"><span class="pre">**</span> <span class="pre">Invalid</span> <span class="pre">host:</span></code>. |
| 641 | The valid value is <code class="docutils literal notranslate"><span class="pre">127.0.0.1</span> <span class="pre">(idlelib.rpc.LOCALHOST)</span></code>. |
| 642 | One can diagnose with <code class="docutils literal notranslate"><span class="pre">tcpconnect</span> <span class="pre">-irv</span> <span class="pre">127.0.0.1</span> <span class="pre">6543</span></code> in one |
| 643 | terminal window and <code class="docutils literal notranslate"><span class="pre">tcplisten</span> <span class="pre"><same</span> <span class="pre">args></span></code> in another.</p> |
terryjreedy | 188aedf | 2017-06-13 21:32:16 -0400 | [diff] [blame] | 644 | <p>A common cause of failure is a user-written file with the same name as a |
| 645 | standard library module, such as <em>random.py</em> and <em>tkinter.py</em>. When such a |
| 646 | file is located in the same directory as a file that is about to be run, |
| 647 | IDLE cannot import the stdlib file. The current fix is to rename the |
| 648 | user file.</p> |
| 649 | <p>Though less common than in the past, an antivirus or firewall program may |
| 650 | stop the connection. If the program cannot be taught to allow the |
| 651 | connection, then it must be turned off for IDLE to work. It is safe to |
| 652 | allow this internal connection because no data is visible on external |
| 653 | ports. A similar problem is a network mis-configuration that blocks |
| 654 | connections.</p> |
| 655 | <p>Python installation issues occasionally stop IDLE: multiple versions can |
| 656 | clash, or a single installation might need admin access. If one undo the |
| 657 | clash, or cannot or does not want to run as admin, it might be easiest to |
| 658 | completely remove Python and start over.</p> |
| 659 | <p>A zombie pythonw.exe process could be a problem. On Windows, use Task |
Terry Jan Reedy | 2522db1 | 2020-03-08 14:32:42 -0400 | [diff] [blame] | 660 | Manager to check for one and stop it if there is. Sometimes a restart |
| 661 | initiated by a program crash or Keyboard Interrupt (control-C) may fail |
| 662 | to connect. Dismissing the error box or using Restart Shell on the Shell |
| 663 | menu may fix a temporary problem.</p> |
terryjreedy | 188aedf | 2017-06-13 21:32:16 -0400 | [diff] [blame] | 664 | <p>When IDLE first starts, it attempts to read user configuration files in |
Tal Einat | d6c08db | 2020-01-06 01:51:48 +0200 | [diff] [blame] | 665 | <code class="docutils literal notranslate"><span class="pre">~/.idlerc/</span></code> (~ is one’s home directory). If there is a problem, an error |
terryjreedy | 188aedf | 2017-06-13 21:32:16 -0400 | [diff] [blame] | 666 | message should be displayed. Leaving aside random disk glitches, this can |
Terry Jan Reedy | 2522db1 | 2020-03-08 14:32:42 -0400 | [diff] [blame] | 667 | be prevented by never editing the files by hand. Instead, use the |
| 668 | configuration dialog, under Options. Once there is an error in a user |
| 669 | configuration file, the best solution may be to delete it and start over |
| 670 | with the settings dialog.</p> |
terryjreedy | 188aedf | 2017-06-13 21:32:16 -0400 | [diff] [blame] | 671 | <p>If IDLE quits with no message, and it was not started from a console, try |
Terry Jan Reedy | 2522db1 | 2020-03-08 14:32:42 -0400 | [diff] [blame] | 672 | starting it from a console or terminal (<code class="docutils literal notranslate"><span class="pre">python</span> <span class="pre">-m</span> <span class="pre">idlelib</span></code>) and see if |
| 673 | this results in an error message.</p> |
Terry Jan Reedy | 1b4a9c7 | 2021-03-31 01:19:38 -0400 | [diff] [blame] | 674 | <p>On Unix-based systems with tcl/tk older than <code class="docutils literal notranslate"><span class="pre">8.6.11</span></code> (see |
| 675 | <code class="docutils literal notranslate"><span class="pre">About</span> <span class="pre">IDLE</span></code>) certain characters of certain fonts can cause |
| 676 | a tk failure with a message to the terminal. This can happen either |
| 677 | if one starts IDLE to edit a file with such a character or later |
| 678 | when entering such a character. If one cannot upgrade tcl/tk, |
| 679 | then re-configure IDLE to use a font that works better.</p> |
terryjreedy | 188aedf | 2017-06-13 21:32:16 -0400 | [diff] [blame] | 680 | </div> |
Terry Jan Reedy | f1d3efc | 2018-11-05 22:17:57 -0500 | [diff] [blame] | 681 | <div class="section" id="running-user-code"> |
| 682 | <h3>Running user code<a class="headerlink" href="#running-user-code" title="Permalink to this headline">¶</a></h3> |
Terry Jan Reedy | 98758bc | 2017-09-12 09:05:16 -0400 | [diff] [blame] | 683 | <p>With rare exceptions, the result of executing Python code with IDLE is |
Terry Jan Reedy | f1d3efc | 2018-11-05 22:17:57 -0500 | [diff] [blame] | 684 | intended to be the same as executing the same code by the default method, |
| 685 | directly with Python in a text-mode system console or terminal window. |
Terry Jan Reedy | 98758bc | 2017-09-12 09:05:16 -0400 | [diff] [blame] | 686 | However, the different interface and operation occasionally affect |
Terry Jan Reedy | f1d3efc | 2018-11-05 22:17:57 -0500 | [diff] [blame] | 687 | visible results. For instance, <code class="docutils literal notranslate"><span class="pre">sys.modules</span></code> starts with more entries, |
| 688 | and <code class="docutils literal notranslate"><span class="pre">threading.activeCount()</span></code> returns 2 instead of 1.</p> |
| 689 | <p>By default, IDLE runs user code in a separate OS process rather than in |
| 690 | the user interface process that runs the shell and editor. In the execution |
| 691 | process, it replaces <code class="docutils literal notranslate"><span class="pre">sys.stdin</span></code>, <code class="docutils literal notranslate"><span class="pre">sys.stdout</span></code>, and <code class="docutils literal notranslate"><span class="pre">sys.stderr</span></code> |
| 692 | with objects that get input from and send output to the Shell window. |
| 693 | The original values stored in <code class="docutils literal notranslate"><span class="pre">sys.__stdin__</span></code>, <code class="docutils literal notranslate"><span class="pre">sys.__stdout__</span></code>, and |
| 694 | <code class="docutils literal notranslate"><span class="pre">sys.__stderr__</span></code> are not touched, but may be <code class="docutils literal notranslate"><span class="pre">None</span></code>.</p> |
Terry Jan Reedy | 2827e8a | 2021-02-23 19:39:51 -0500 | [diff] [blame] | 695 | <p>Sending print output from one process to a text widget in another is |
| 696 | slower than printing to a system terminal in the same process. |
| 697 | This has the most effect when printing multiple arguments, as the string |
| 698 | for each argument, each separator, the newline are sent separately. |
| 699 | For development, this is usually not a problem, but if one wants to |
| 700 | print faster in IDLE, format and join together everything one wants |
| 701 | displayed together and then print a single string. Both format strings |
| 702 | and <a class="reference internal" href="stdtypes.html#str.join" title="str.join"><code class="xref py py-meth docutils literal notranslate"><span class="pre">str.join()</span></code></a> can help combine fields and lines.</p> |
Terry Jan Reedy | 4cf7bb8 | 2021-02-21 02:44:11 -0500 | [diff] [blame] | 703 | <p>IDLE’s standard stream replacements are not inherited by subprocesses |
| 704 | created in the execution process, whether directly by user code or by |
| 705 | modules such as multiprocessing. If such subprocess use <code class="docutils literal notranslate"><span class="pre">input</span></code> from |
| 706 | sys.stdin or <code class="docutils literal notranslate"><span class="pre">print</span></code> or <code class="docutils literal notranslate"><span class="pre">write</span></code> to sys.stdout or sys.stderr, |
| 707 | IDLE should be started in a command line window. The secondary subprocess |
| 708 | will then be attached to that window for input and output.</p> |
| 709 | <p>If <code class="docutils literal notranslate"><span class="pre">sys</span></code> is reset by user code, such as with <code class="docutils literal notranslate"><span class="pre">importlib.reload(sys)</span></code>, |
| 710 | IDLE’s changes are lost and input from the keyboard and output to the screen |
| 711 | will not work correctly.</p> |
Terry Jan Reedy | f1d3efc | 2018-11-05 22:17:57 -0500 | [diff] [blame] | 712 | <p>When Shell has the focus, it controls the keyboard and screen. This is |
Terry Jan Reedy | 98758bc | 2017-09-12 09:05:16 -0400 | [diff] [blame] | 713 | normally transparent, but functions that directly access the keyboard |
Terry Jan Reedy | f1d3efc | 2018-11-05 22:17:57 -0500 | [diff] [blame] | 714 | and screen will not work. These include system-specific functions that |
| 715 | determine whether a key has been pressed and if so, which.</p> |
Tal Einat | fcf1d00 | 2019-07-06 15:35:24 +0300 | [diff] [blame] | 716 | <p>The IDLE code running in the execution process adds frames to the call stack |
| 717 | that would not be there otherwise. IDLE wraps <code class="docutils literal notranslate"><span class="pre">sys.getrecursionlimit</span></code> and |
Terry Jan Reedy | 4cf7bb8 | 2021-02-21 02:44:11 -0500 | [diff] [blame] | 718 | <code class="docutils literal notranslate"><span class="pre">sys.setrecursionlimit</span></code> to reduce the effect of the additional stack |
| 719 | frames.</p> |
| 720 | <p>When user code raises SystemExit either directly or by calling sys.exit, |
| 721 | IDLE returns to a Shell prompt instead of exiting.</p> |
Terry Jan Reedy | 0053c47 | 2015-09-24 03:09:43 -0400 | [diff] [blame] | 722 | </div> |
Terry Jan Reedy | 75d9d59 | 2018-11-06 12:37:36 -0500 | [diff] [blame] | 723 | <div class="section" id="user-output-in-shell"> |
| 724 | <h3>User output in Shell<a class="headerlink" href="#user-output-in-shell" title="Permalink to this headline">¶</a></h3> |
| 725 | <p>When a program outputs text, the result is determined by the |
| 726 | corresponding output device. When IDLE executes user code, <code class="docutils literal notranslate"><span class="pre">sys.stdout</span></code> |
| 727 | and <code class="docutils literal notranslate"><span class="pre">sys.stderr</span></code> are connected to the display area of IDLE’s Shell. Some of |
| 728 | its features are inherited from the underlying Tk Text widget. Others |
Terry Jan Reedy | 76cd0c3 | 2018-11-06 23:55:06 -0500 | [diff] [blame] | 729 | are programmed additions. Where it matters, Shell is designed for development |
| 730 | rather than production runs.</p> |
| 731 | <p>For instance, Shell never throws away output. A program that sends unlimited |
| 732 | output to Shell will eventually fill memory, resulting in a memory error. |
| 733 | In contrast, some system text windows only keep the last n lines of output. |
| 734 | A Windows console, for instance, keeps a user-settable 1 to 9999 lines, |
| 735 | with 300 the default.</p> |
Terry Jan Reedy | 55d0351 | 2019-04-26 23:22:36 -0400 | [diff] [blame] | 736 | <p>A Tk Text widget, and hence IDLE’s Shell, displays characters (codepoints) in |
| 737 | the BMP (Basic Multilingual Plane) subset of Unicode. Which characters are |
| 738 | displayed with a proper glyph and which with a replacement box depends on the |
| 739 | operating system and installed fonts. Tab characters cause the following text |
| 740 | to begin after the next tab stop. (They occur every 8 ‘characters’). Newline |
| 741 | characters cause following text to appear on a new line. Other control |
| 742 | characters are ignored or displayed as a space, box, or something else, |
| 743 | depending on the operating system and font. (Moving the text cursor through |
| 744 | such output with arrow keys may exhibit some surprising spacing behavior.)</p> |
| 745 | <div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">s</span> <span class="o">=</span> <span class="s1">'a</span><span class="se">\t</span><span class="s1">b</span><span class="se">\a</span><span class="s1"><</span><span class="se">\x02</span><span class="s1">><</span><span class="se">\r</span><span class="s1">></span><span class="se">\b</span><span class="s1">c</span><span class="se">\n</span><span class="s1">d'</span> <span class="c1"># Enter 22 chars.</span> |
| 746 | <span class="gp">>>> </span><span class="nb">len</span><span class="p">(</span><span class="n">s</span><span class="p">)</span> |
| 747 | <span class="go">14</span> |
| 748 | <span class="gp">>>> </span><span class="n">s</span> <span class="c1"># Display repr(s)</span> |
| 749 | <span class="go">'a\tb\x07<\x02><\r>\x08c\nd'</span> |
| 750 | <span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">s</span><span class="p">,</span> <span class="n">end</span><span class="o">=</span><span class="s1">''</span><span class="p">)</span> <span class="c1"># Display s as is.</span> |
| 751 | <span class="go"># Result varies by OS and font. Try it.</span> |
Terry Jan Reedy | 8a03ff2 | 2019-02-08 22:51:51 -0500 | [diff] [blame] | 752 | </pre></div> |
| 753 | </div> |
| 754 | <p>The <code class="docutils literal notranslate"><span class="pre">repr</span></code> function is used for interactive echo of expression |
| 755 | values. It returns an altered version of the input string in which |
| 756 | control codes, some BMP codepoints, and all non-BMP codepoints are |
| 757 | replaced with escape codes. As demonstrated above, it allows one to |
| 758 | identify the characters in a string, regardless of how they are displayed.</p> |
Terry Jan Reedy | 75d9d59 | 2018-11-06 12:37:36 -0500 | [diff] [blame] | 759 | <p>Normal and error output are generally kept separate (on separate lines) |
| 760 | from code input and each other. They each get different highlight colors.</p> |
| 761 | <p>For SyntaxError tracebacks, the normal ‘^’ marking where the error was |
| 762 | detected is replaced by coloring the text with an error highlight. |
| 763 | When code run from a file causes other exceptions, one may right click |
| 764 | on a traceback line to jump to the corresponding line in an IDLE editor. |
| 765 | The file will be opened if necessary.</p> |
| 766 | <p>Shell has a special facility for squeezing output lines down to a |
| 767 | ‘Squeezed text’ label. This is done automatically |
| 768 | for output over N lines (N = 50 by default). |
| 769 | N can be changed in the PyShell section of the General |
| 770 | page of the Settings dialog. Output with fewer lines can be squeezed by |
| 771 | right clicking on the output. This can be useful lines long enough to slow |
| 772 | down scrolling.</p> |
| 773 | <p>Squeezed output is expanded in place by double-clicking the label. |
| 774 | It can also be sent to the clipboard or a separate view window by |
| 775 | right-clicking the label.</p> |
| 776 | </div> |
Terry Jan Reedy | 98758bc | 2017-09-12 09:05:16 -0400 | [diff] [blame] | 777 | <div class="section" id="developing-tkinter-applications"> |
Terry Jan Reedy | db40cb5 | 2018-10-28 01:21:36 -0400 | [diff] [blame] | 778 | <h3>Developing tkinter applications<a class="headerlink" href="#developing-tkinter-applications" title="Permalink to this headline">¶</a></h3> |
Terry Jan Reedy | 98758bc | 2017-09-12 09:05:16 -0400 | [diff] [blame] | 779 | <p>IDLE is intentionally different from standard Python in order to |
Terry Jan Reedy | af4b013 | 2018-06-10 15:48:41 -0400 | [diff] [blame] | 780 | facilitate development of tkinter programs. Enter <code class="docutils literal notranslate"><span class="pre">import</span> <span class="pre">tkinter</span> <span class="pre">as</span> <span class="pre">tk;</span> |
Terry Jan Reedy | 98758bc | 2017-09-12 09:05:16 -0400 | [diff] [blame] | 781 | <span class="pre">root</span> <span class="pre">=</span> <span class="pre">tk.Tk()</span></code> in standard Python and nothing appears. Enter the same |
| 782 | in IDLE and a tk window appears. In standard Python, one must also enter |
Terry Jan Reedy | af4b013 | 2018-06-10 15:48:41 -0400 | [diff] [blame] | 783 | <code class="docutils literal notranslate"><span class="pre">root.update()</span></code> to see the window. IDLE does the equivalent in the |
penguindustin | 9646630 | 2019-05-06 14:57:17 -0400 | [diff] [blame] | 784 | background, about 20 times a second, which is about every 50 milliseconds. |
Terry Jan Reedy | af4b013 | 2018-06-10 15:48:41 -0400 | [diff] [blame] | 785 | Next enter <code class="docutils literal notranslate"><span class="pre">b</span> <span class="pre">=</span> <span class="pre">tk.Button(root,</span> <span class="pre">text='button');</span> <span class="pre">b.pack()</span></code>. Again, |
| 786 | nothing visibly changes in standard Python until one enters <code class="docutils literal notranslate"><span class="pre">root.update()</span></code>.</p> |
| 787 | <p>Most tkinter programs run <code class="docutils literal notranslate"><span class="pre">root.mainloop()</span></code>, which usually does not |
Terry Jan Reedy | 98758bc | 2017-09-12 09:05:16 -0400 | [diff] [blame] | 788 | return until the tk app is destroyed. If the program is run with |
Terry Jan Reedy | af4b013 | 2018-06-10 15:48:41 -0400 | [diff] [blame] | 789 | <code class="docutils literal notranslate"><span class="pre">python</span> <span class="pre">-i</span></code> or from an IDLE editor, a <code class="docutils literal notranslate"><span class="pre">>>></span></code> shell prompt does not |
| 790 | appear until <code class="docutils literal notranslate"><span class="pre">mainloop()</span></code> returns, at which time there is nothing left |
Terry Jan Reedy | 98758bc | 2017-09-12 09:05:16 -0400 | [diff] [blame] | 791 | to interact with.</p> |
| 792 | <p>When running a tkinter program from an IDLE editor, one can comment out |
| 793 | the mainloop call. One then gets a shell prompt immediately and can |
| 794 | interact with the live application. One just has to remember to |
| 795 | re-enable the mainloop call when running in standard Python.</p> |
| 796 | </div> |
Terry Jan Reedy | 5d46ab1 | 2015-09-20 19:57:13 -0400 | [diff] [blame] | 797 | <div class="section" id="running-without-a-subprocess"> |
Terry Jan Reedy | db40cb5 | 2018-10-28 01:21:36 -0400 | [diff] [blame] | 798 | <h3>Running without a subprocess<a class="headerlink" href="#running-without-a-subprocess" title="Permalink to this headline">¶</a></h3> |
Terry Jan Reedy | 0053c47 | 2015-09-24 03:09:43 -0400 | [diff] [blame] | 799 | <p>By default, IDLE executes user code in a separate subprocess via a socket, |
Terry Jan Reedy | 6e10ec5 | 2015-09-23 20:00:33 -0400 | [diff] [blame] | 800 | which uses the internal loopback interface. This connection is not |
| 801 | externally visible and no data is sent to or received from the Internet. |
| 802 | If firewall software complains anyway, you can ignore it.</p> |
| 803 | <p>If the attempt to make the socket connection fails, Idle will notify you. |
| 804 | Such failures are sometimes transient, but if persistent, the problem |
terryjreedy | 188aedf | 2017-06-13 21:32:16 -0400 | [diff] [blame] | 805 | may be either a firewall blocking the connection or misconfiguration of |
Terry Jan Reedy | 6e10ec5 | 2015-09-23 20:00:33 -0400 | [diff] [blame] | 806 | a particular system. Until the problem is fixed, one can run Idle with |
| 807 | the -n command line switch.</p> |
Terry Jan Reedy | 5d46ab1 | 2015-09-20 19:57:13 -0400 | [diff] [blame] | 808 | <p>If IDLE is started with the -n command line switch it will run in a |
| 809 | single process and will not create the subprocess which runs the RPC |
| 810 | Python execution server. This can be useful if Python cannot create |
| 811 | the subprocess or the RPC socket interface on your platform. However, |
| 812 | in this mode user code is not isolated from IDLE itself. Also, the |
| 813 | environment is not restarted when Run/Run Module (F5) is selected. If |
| 814 | your code has been modified, you must reload() the affected modules and |
| 815 | re-import any specific items (e.g. from foo import baz) if the changes |
| 816 | are to take effect. For these reasons, it is preferable to run IDLE |
| 817 | with the default subprocess if at all possible.</p> |
| 818 | <div class="deprecated"> |
Tal Einat | fcf1d00 | 2019-07-06 15:35:24 +0300 | [diff] [blame] | 819 | <p><span class="versionmodified deprecated">Deprecated since version 3.4.</span></p> |
Terry Jan Reedy | 5d46ab1 | 2015-09-20 19:57:13 -0400 | [diff] [blame] | 820 | </div> |
| 821 | </div> |
| 822 | </div> |
| 823 | <div class="section" id="help-and-preferences"> |
Terry Jan Reedy | db40cb5 | 2018-10-28 01:21:36 -0400 | [diff] [blame] | 824 | <h2>Help and preferences<a class="headerlink" href="#help-and-preferences" title="Permalink to this headline">¶</a></h2> |
Terry Jan Reedy | 1803263 | 2018-10-28 16:21:18 -0400 | [diff] [blame] | 825 | <div class="section" id="help-sources"> |
Cheryl Sabella | 01421be | 2018-12-20 00:38:54 -0500 | [diff] [blame] | 826 | <span id="id6"></span><h3>Help sources<a class="headerlink" href="#help-sources" title="Permalink to this headline">¶</a></h3> |
Terry Jan Reedy | 1803263 | 2018-10-28 16:21:18 -0400 | [diff] [blame] | 827 | <p>Help menu entry “IDLE Help” displays a formatted html version of the |
| 828 | IDLE chapter of the Library Reference. The result, in a read-only |
| 829 | tkinter text window, is close to what one sees in a web browser. |
| 830 | Navigate through the text with a mousewheel, |
| 831 | the scrollbar, or up and down arrow keys held down. |
| 832 | Or click the TOC (Table of Contents) button and select a section |
| 833 | header in the opened box.</p> |
| 834 | <p>Help menu entry “Python Docs” opens the extensive sources of help, |
Tal Einat | d6c08db | 2020-01-06 01:51:48 +0200 | [diff] [blame] | 835 | including tutorials, available at <code class="docutils literal notranslate"><span class="pre">docs.python.org/x.y</span></code>, where ‘x.y’ |
Terry Jan Reedy | 1803263 | 2018-10-28 16:21:18 -0400 | [diff] [blame] | 836 | is the currently running Python version. If your system |
| 837 | has an off-line copy of the docs (this may be an installation option), |
| 838 | that will be opened instead.</p> |
| 839 | <p>Selected URLs can be added or removed from the help menu at any time using the |
Tal Einat | d6c08db | 2020-01-06 01:51:48 +0200 | [diff] [blame] | 840 | General tab of the Configure IDLE dialog.</p> |
Terry Jan Reedy | 5d46ab1 | 2015-09-20 19:57:13 -0400 | [diff] [blame] | 841 | </div> |
| 842 | <div class="section" id="setting-preferences"> |
Terry Jan Reedy | 292cd6e | 2018-12-20 06:06:29 -0500 | [diff] [blame] | 843 | <span id="preferences"></span><h3>Setting preferences<a class="headerlink" href="#setting-preferences" title="Permalink to this headline">¶</a></h3> |
Terry Jan Reedy | 5d46ab1 | 2015-09-20 19:57:13 -0400 | [diff] [blame] | 844 | <p>The font preferences, highlighting, keys, and general preferences can be |
Terry Jan Reedy | 292cd6e | 2018-12-20 06:06:29 -0500 | [diff] [blame] | 845 | changed via Configure IDLE on the Option menu. |
Tal Einat | d6c08db | 2020-01-06 01:51:48 +0200 | [diff] [blame] | 846 | Non-default user settings are saved in a <code class="docutils literal notranslate"><span class="pre">.idlerc</span></code> directory in the user’s |
Terry Jan Reedy | 292cd6e | 2018-12-20 06:06:29 -0500 | [diff] [blame] | 847 | home directory. Problems caused by bad user configuration files are solved |
Tal Einat | d6c08db | 2020-01-06 01:51:48 +0200 | [diff] [blame] | 848 | by editing or deleting one or more of the files in <code class="docutils literal notranslate"><span class="pre">.idlerc</span></code>.</p> |
Terry Jan Reedy | d610116 | 2019-02-23 23:04:53 -0500 | [diff] [blame] | 849 | <p>On the Font tab, see the text sample for the effect of font face and size |
| 850 | on multiple characters in multiple languages. Edit the sample to add |
| 851 | other characters of personal interest. Use the sample to select |
| 852 | monospaced fonts. If particular characters have problems in Shell or an |
| 853 | editor, add them to the top of the sample and try changing first size |
| 854 | and then font.</p> |
Terry Jan Reedy | 292cd6e | 2018-12-20 06:06:29 -0500 | [diff] [blame] | 855 | <p>On the Highlights and Keys tab, select a built-in or custom color theme |
| 856 | and key set. To use a newer built-in color theme or key set with older |
| 857 | IDLEs, save it as a new custom theme or key set and it well be accessible |
| 858 | to older IDLEs.</p> |
Terry Jan Reedy | 5d46ab1 | 2015-09-20 19:57:13 -0400 | [diff] [blame] | 859 | </div> |
Terry Jan Reedy | 50ff02b | 2018-11-10 23:26:31 -0500 | [diff] [blame] | 860 | <div class="section" id="idle-on-macos"> |
Terry Jan Reedy | b65413b | 2018-11-15 13:15:13 -0500 | [diff] [blame] | 861 | <h3>IDLE on macOS<a class="headerlink" href="#idle-on-macos" title="Permalink to this headline">¶</a></h3> |
Terry Jan Reedy | 50ff02b | 2018-11-10 23:26:31 -0500 | [diff] [blame] | 862 | <p>Under System Preferences: Dock, one can set “Prefer tabs when opening |
| 863 | documents” to “Always”. This setting is not compatible with the tk/tkinter |
| 864 | GUI framework used by IDLE, and it breaks a few IDLE features.</p> |
| 865 | </div> |
Terry Jan Reedy | 5d46ab1 | 2015-09-20 19:57:13 -0400 | [diff] [blame] | 866 | <div class="section" id="extensions"> |
Terry Jan Reedy | db40cb5 | 2018-10-28 01:21:36 -0400 | [diff] [blame] | 867 | <h3>Extensions<a class="headerlink" href="#extensions" title="Permalink to this headline">¶</a></h3> |
terryjreedy | 188aedf | 2017-06-13 21:32:16 -0400 | [diff] [blame] | 868 | <p>IDLE contains an extension facility. Preferences for extensions can be |
Terry Jan Reedy | adb4cd2 | 2017-09-12 07:45:15 -0400 | [diff] [blame] | 869 | changed with the Extensions tab of the preferences dialog. See the |
| 870 | beginning of config-extensions.def in the idlelib directory for further |
| 871 | information. The only current default extension is zzdummy, an example |
Terry Jan Reedy | 98758bc | 2017-09-12 09:05:16 -0400 | [diff] [blame] | 872 | also used for testing.</p> |
Terry Jan Reedy | 5d46ab1 | 2015-09-20 19:57:13 -0400 | [diff] [blame] | 873 | </div> |
| 874 | </div> |
| 875 | </div> |
| 876 | |
| 877 | |
Terry Jan Reedy | a460d45 | 2020-10-20 20:56:01 -0400 | [diff] [blame] | 878 | <div class="clearer"></div> |
Terry Jan Reedy | 5d46ab1 | 2015-09-20 19:57:13 -0400 | [diff] [blame] | 879 | </div> |
| 880 | </div> |
| 881 | </div> |
Terry Jan Reedy | f8cd02d | 2016-03-01 00:29:57 -0500 | [diff] [blame] | 882 | <div class="sphinxsidebar" role="navigation" aria-label="main navigation"> |
Terry Jan Reedy | 5d46ab1 | 2015-09-20 19:57:13 -0400 | [diff] [blame] | 883 | <div class="sphinxsidebarwrapper"> |
Terry Jan Reedy | db40cb5 | 2018-10-28 01:21:36 -0400 | [diff] [blame] | 884 | <h3><a href="../contents.html">Table of Contents</a></h3> |
Terry Jan Reedy | 5d46ab1 | 2015-09-20 19:57:13 -0400 | [diff] [blame] | 885 | <ul> |
Terry Jan Reedy | db40cb5 | 2018-10-28 01:21:36 -0400 | [diff] [blame] | 886 | <li><a class="reference internal" href="#">IDLE</a><ul> |
| 887 | <li><a class="reference internal" href="#menus">Menus</a><ul> |
| 888 | <li><a class="reference internal" href="#file-menu-shell-and-editor">File menu (Shell and Editor)</a></li> |
| 889 | <li><a class="reference internal" href="#edit-menu-shell-and-editor">Edit menu (Shell and Editor)</a></li> |
| 890 | <li><a class="reference internal" href="#format-menu-editor-window-only">Format menu (Editor window only)</a></li> |
| 891 | <li><a class="reference internal" href="#run-menu-editor-window-only">Run menu (Editor window only)</a></li> |
| 892 | <li><a class="reference internal" href="#shell-menu-shell-window-only">Shell menu (Shell window only)</a></li> |
| 893 | <li><a class="reference internal" href="#debug-menu-shell-window-only">Debug menu (Shell window only)</a></li> |
| 894 | <li><a class="reference internal" href="#options-menu-shell-and-editor">Options menu (Shell and Editor)</a></li> |
| 895 | <li><a class="reference internal" href="#window-menu-shell-and-editor">Window menu (Shell and Editor)</a></li> |
| 896 | <li><a class="reference internal" href="#help-menu-shell-and-editor">Help menu (Shell and Editor)</a></li> |
| 897 | <li><a class="reference internal" href="#context-menus">Context Menus</a></li> |
Terry Jan Reedy | 5d46ab1 | 2015-09-20 19:57:13 -0400 | [diff] [blame] | 898 | </ul> |
| 899 | </li> |
Terry Jan Reedy | db40cb5 | 2018-10-28 01:21:36 -0400 | [diff] [blame] | 900 | <li><a class="reference internal" href="#editing-and-navigation">Editing and navigation</a><ul> |
Terry Jan Reedy | ea9c8bd | 2018-10-28 20:42:18 -0400 | [diff] [blame] | 901 | <li><a class="reference internal" href="#editor-windows">Editor windows</a></li> |
| 902 | <li><a class="reference internal" href="#key-bindings">Key bindings</a></li> |
Terry Jan Reedy | db40cb5 | 2018-10-28 01:21:36 -0400 | [diff] [blame] | 903 | <li><a class="reference internal" href="#automatic-indentation">Automatic indentation</a></li> |
| 904 | <li><a class="reference internal" href="#completions">Completions</a></li> |
| 905 | <li><a class="reference internal" href="#calltips">Calltips</a></li> |
Cheryl Sabella | 01421be | 2018-12-20 00:38:54 -0500 | [diff] [blame] | 906 | <li><a class="reference internal" href="#code-context">Code Context</a></li> |
Terry Jan Reedy | db40cb5 | 2018-10-28 01:21:36 -0400 | [diff] [blame] | 907 | <li><a class="reference internal" href="#python-shell-window">Python Shell window</a></li> |
| 908 | <li><a class="reference internal" href="#text-colors">Text colors</a></li> |
Terry Jan Reedy | 5d46ab1 | 2015-09-20 19:57:13 -0400 | [diff] [blame] | 909 | </ul> |
| 910 | </li> |
Terry Jan Reedy | db40cb5 | 2018-10-28 01:21:36 -0400 | [diff] [blame] | 911 | <li><a class="reference internal" href="#startup-and-code-execution">Startup and code execution</a><ul> |
| 912 | <li><a class="reference internal" href="#command-line-usage">Command line usage</a></li> |
| 913 | <li><a class="reference internal" href="#startup-failure">Startup failure</a></li> |
Terry Jan Reedy | f1d3efc | 2018-11-05 22:17:57 -0500 | [diff] [blame] | 914 | <li><a class="reference internal" href="#running-user-code">Running user code</a></li> |
Terry Jan Reedy | 75d9d59 | 2018-11-06 12:37:36 -0500 | [diff] [blame] | 915 | <li><a class="reference internal" href="#user-output-in-shell">User output in Shell</a></li> |
Terry Jan Reedy | db40cb5 | 2018-10-28 01:21:36 -0400 | [diff] [blame] | 916 | <li><a class="reference internal" href="#developing-tkinter-applications">Developing tkinter applications</a></li> |
| 917 | <li><a class="reference internal" href="#running-without-a-subprocess">Running without a subprocess</a></li> |
Terry Jan Reedy | 5d46ab1 | 2015-09-20 19:57:13 -0400 | [diff] [blame] | 918 | </ul> |
| 919 | </li> |
Terry Jan Reedy | db40cb5 | 2018-10-28 01:21:36 -0400 | [diff] [blame] | 920 | <li><a class="reference internal" href="#help-and-preferences">Help and preferences</a><ul> |
Terry Jan Reedy | 1803263 | 2018-10-28 16:21:18 -0400 | [diff] [blame] | 921 | <li><a class="reference internal" href="#help-sources">Help sources</a></li> |
Terry Jan Reedy | db40cb5 | 2018-10-28 01:21:36 -0400 | [diff] [blame] | 922 | <li><a class="reference internal" href="#setting-preferences">Setting preferences</a></li> |
Terry Jan Reedy | b65413b | 2018-11-15 13:15:13 -0500 | [diff] [blame] | 923 | <li><a class="reference internal" href="#idle-on-macos">IDLE on macOS</a></li> |
Terry Jan Reedy | db40cb5 | 2018-10-28 01:21:36 -0400 | [diff] [blame] | 924 | <li><a class="reference internal" href="#extensions">Extensions</a></li> |
Terry Jan Reedy | 5d46ab1 | 2015-09-20 19:57:13 -0400 | [diff] [blame] | 925 | </ul> |
| 926 | </li> |
| 927 | </ul> |
| 928 | </li> |
| 929 | </ul> |
| 930 | |
| 931 | <h4>Previous topic</h4> |
Terry Jan Reedy | 6bf644e | 2019-11-24 16:29:29 -0500 | [diff] [blame] | 932 | <p class="topless"><a href="tkinter.tix.html" |
| 933 | title="previous chapter"><code class="xref py py-mod docutils literal notranslate"><span class="pre">tkinter.tix</span></code> — Extension widgets for Tk</a></p> |
Terry Jan Reedy | 5d46ab1 | 2015-09-20 19:57:13 -0400 | [diff] [blame] | 934 | <h4>Next topic</h4> |
| 935 | <p class="topless"><a href="othergui.html" |
Terry Jan Reedy | db40cb5 | 2018-10-28 01:21:36 -0400 | [diff] [blame] | 936 | title="next chapter">Other Graphical User Interface Packages</a></p> |
Terry Jan Reedy | 4b73676 | 2016-09-12 01:50:03 -0400 | [diff] [blame] | 937 | <div role="note" aria-label="source link"> |
| 938 | <h3>This Page</h3> |
| 939 | <ul class="this-page-menu"> |
| 940 | <li><a href="../bugs.html">Report a Bug</a></li> |
terryjreedy | 188aedf | 2017-06-13 21:32:16 -0400 | [diff] [blame] | 941 | <li> |
Terry Jan Reedy | af4b013 | 2018-06-10 15:48:41 -0400 | [diff] [blame] | 942 | <a href="https://github.com/python/cpython/blob/master/Doc/library/idle.rst" |
terryjreedy | 188aedf | 2017-06-13 21:32:16 -0400 | [diff] [blame] | 943 | rel="nofollow">Show Source |
| 944 | </a> |
| 945 | </li> |
Terry Jan Reedy | 4b73676 | 2016-09-12 01:50:03 -0400 | [diff] [blame] | 946 | </ul> |
| 947 | </div> |
Terry Jan Reedy | 5d46ab1 | 2015-09-20 19:57:13 -0400 | [diff] [blame] | 948 | </div> |
| 949 | </div> |
| 950 | <div class="clearer"></div> |
Terry Jan Reedy | 963a38b | 2015-09-20 20:03:01 -0400 | [diff] [blame] | 951 | </div> |
Terry Jan Reedy | f8cd02d | 2016-03-01 00:29:57 -0500 | [diff] [blame] | 952 | <div class="related" role="navigation" aria-label="related navigation"> |
Terry Jan Reedy | 5d46ab1 | 2015-09-20 19:57:13 -0400 | [diff] [blame] | 953 | <h3>Navigation</h3> |
| 954 | <ul> |
| 955 | <li class="right" style="margin-right: 10px"> |
| 956 | <a href="../genindex.html" title="General Index" |
| 957 | >index</a></li> |
| 958 | <li class="right" > |
| 959 | <a href="../py-modindex.html" title="Python Module Index" |
| 960 | >modules</a> |</li> |
| 961 | <li class="right" > |
Terry Jan Reedy | db40cb5 | 2018-10-28 01:21:36 -0400 | [diff] [blame] | 962 | <a href="othergui.html" title="Other Graphical User Interface Packages" |
Terry Jan Reedy | 5d46ab1 | 2015-09-20 19:57:13 -0400 | [diff] [blame] | 963 | >next</a> |</li> |
| 964 | <li class="right" > |
Terry Jan Reedy | 6bf644e | 2019-11-24 16:29:29 -0500 | [diff] [blame] | 965 | <a href="tkinter.tix.html" title="tkinter.tix — Extension widgets for Tk" |
Terry Jan Reedy | 5d46ab1 | 2015-09-20 19:57:13 -0400 | [diff] [blame] | 966 | >previous</a> |</li> |
Terry Jan Reedy | 5d46ab1 | 2015-09-20 19:57:13 -0400 | [diff] [blame] | 967 | |
Terry Jan Reedy | af4b013 | 2018-06-10 15:48:41 -0400 | [diff] [blame] | 968 | <li><img src="../_static/py.png" alt="" |
| 969 | style="vertical-align: middle; margin-top: -1px"/></li> |
| 970 | <li><a href="https://www.python.org/">Python</a> »</li> |
| 971 | |
| 972 | |
Terry Jan Reedy | 4cf7bb8 | 2021-02-21 02:44:11 -0500 | [diff] [blame] | 973 | <li id="cpython-language-and-version"> |
Terry Jan Reedy | 1b4a9c7 | 2021-03-31 01:19:38 -0400 | [diff] [blame] | 974 | <a href="../index.html">3.10.0a6 Documentation</a> » |
Terry Jan Reedy | af4b013 | 2018-06-10 15:48:41 -0400 | [diff] [blame] | 975 | </li> |
| 976 | |
| 977 | <li class="nav-item nav-item-1"><a href="index.html" >The Python Standard Library</a> »</li> |
Terry Jan Reedy | db40cb5 | 2018-10-28 01:21:36 -0400 | [diff] [blame] | 978 | <li class="nav-item nav-item-2"><a href="tk.html" >Graphical User Interfaces with Tk</a> »</li> |
Terry Jan Reedy | a460d45 | 2020-10-20 20:56:01 -0400 | [diff] [blame] | 979 | <li class="nav-item nav-item-this"><a href="">IDLE</a></li> |
Terry Jan Reedy | 4b73676 | 2016-09-12 01:50:03 -0400 | [diff] [blame] | 980 | <li class="right"> |
| 981 | |
| 982 | |
| 983 | <div class="inline-search" style="display: none" role="search"> |
| 984 | <form class="inline-search" action="../search.html" method="get"> |
| 985 | <input placeholder="Quick search" type="text" name="q" /> |
| 986 | <input type="submit" value="Go" /> |
| 987 | <input type="hidden" name="check_keywords" value="yes" /> |
| 988 | <input type="hidden" name="area" value="default" /> |
| 989 | </form> |
| 990 | </div> |
| 991 | <script type="text/javascript">$('.inline-search').show(0);</script> |
| 992 | | |
| 993 | </li> |
| 994 | |
Terry Jan Reedy | 5d46ab1 | 2015-09-20 19:57:13 -0400 | [diff] [blame] | 995 | </ul> |
Terry Jan Reedy | 963a38b | 2015-09-20 20:03:01 -0400 | [diff] [blame] | 996 | </div> |
Terry Jan Reedy | 5d46ab1 | 2015-09-20 19:57:13 -0400 | [diff] [blame] | 997 | <div class="footer"> |
Terry Jan Reedy | 4cf7bb8 | 2021-02-21 02:44:11 -0500 | [diff] [blame] | 998 | © <a href="../copyright.html">Copyright</a> 2001-2021, Python Software Foundation. |
Terry Jan Reedy | 5d46ab1 | 2015-09-20 19:57:13 -0400 | [diff] [blame] | 999 | <br /> |
Terry Jan Reedy | af4b013 | 2018-06-10 15:48:41 -0400 | [diff] [blame] | 1000 | |
Terry Jan Reedy | 5d46ab1 | 2015-09-20 19:57:13 -0400 | [diff] [blame] | 1001 | The Python Software Foundation is a non-profit corporation. |
Terry Jan Reedy | af4b013 | 2018-06-10 15:48:41 -0400 | [diff] [blame] | 1002 | <a href="https://www.python.org/psf/donations/">Please donate.</a> |
| 1003 | <br /> |
Terry Jan Reedy | 5d46ab1 | 2015-09-20 19:57:13 -0400 | [diff] [blame] | 1004 | <br /> |
Terry Jan Reedy | af4b013 | 2018-06-10 15:48:41 -0400 | [diff] [blame] | 1005 | |
Terry Jan Reedy | 1b4a9c7 | 2021-03-31 01:19:38 -0400 | [diff] [blame] | 1006 | Last updated on Mar 29, 2021. |
Terry Jan Reedy | af4b013 | 2018-06-10 15:48:41 -0400 | [diff] [blame] | 1007 | <a href="https://docs.python.org/3/bugs.html">Found a bug</a>? |
Terry Jan Reedy | 5d46ab1 | 2015-09-20 19:57:13 -0400 | [diff] [blame] | 1008 | <br /> |
Terry Jan Reedy | af4b013 | 2018-06-10 15:48:41 -0400 | [diff] [blame] | 1009 | |
Terry Jan Reedy | a460d45 | 2020-10-20 20:56:01 -0400 | [diff] [blame] | 1010 | Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.2.1. |
Terry Jan Reedy | 5d46ab1 | 2015-09-20 19:57:13 -0400 | [diff] [blame] | 1011 | </div> |
| 1012 | |
| 1013 | </body> |
Terry Jan Reedy | 963a38b | 2015-09-20 20:03:01 -0400 | [diff] [blame] | 1014 | </html> |