# IDLE — Python editor and shell

Вихідний код: Lib/idlelib/

IDLE — це інтегроване середовище розробки та навчання Python.

IDLE має такі особливості:

- кросплатформенність: працює майже однаково на Windows, Unix і macOS

- Вікно оболонки Python (інтерактивний інтерпретатор) із розфарбуванням введення, виведення коду та повідомлень про помилки

- багатовіконний текстовий редактор із множинним скасуванням, розфарбовуванням Python, розумним відступом, підказками щодо виклику, автозавершенням та іншими функціями

- пошук у будь-якому вікні, заміна у вікнах редактора та пошук у кількох файлах (grep)

- налагоджувач із постійними точками зупинки, кроками та переглядом глобальних і локальних просторів імен

- налаштування, браузери та інші діалоги

## Меню

IDLE має два основних типи вікон: вікно оболонки та вікно редактора. Можна мати декілька вікон редактора одночасно. У Windows і Linux кожна з них має власне верхнє меню. Кожне меню, описане нижче, вказує, з яким типом вікна воно пов’язане.

Вікна виводу, такі як використовуються для Правка => Знайти у файлах, є підтипом вікна редактора. Наразі вони мають те саме верхнє меню, але інший заголовок і контекстне меню за замовчуванням.

У macOS є одне меню програми. Він динамічно змінюється відповідно до поточного вибраного вікна. Він має меню IDLE, і деякі записи, описані нижче, переміщено відповідно до вказівок Apple.

### Меню «Файл» (Shell і Editor)

Новий файл

  Створіть нове вікно редагування файлу.

ВІДЧИНЕНО…

  Відкрийте існуючий файл за допомогою діалогового вікна «Відкрити».

Відкрити модуль…

  Відкрийте наявний модуль (пошук sys.path).

Останні файли

  Відкрийте список останніх файлів. Натисніть один, щоб відкрити його.

Module Browser

  Показати функції, класи та методи в поточному файлі редактора у вигляді дерева. В оболонці спочатку відкрийте модуль.

Переглядач шляху

  Показати каталоги, модулі, функції, класи та методи sys.path у структурі дерева.

зберегти

  Збережіть поточне вікно у відповідний файл, якщо він є. Вікна, які були змінені після відкриття або останнього збереження, мають * перед і після заголовка вікна. Якщо пов’язаного файлу немає, виконайте натомість «Зберегти як».

Зберегти як…

  Save the current window with a Save As dialog. The file saved becomes the new associated file for the window. (If your file namager is set to hide extensions, the current extension will be omitted in the file name box. If the new filename has no „.“, „.py“ and „.txt“ will be added for Python and text files, except that on macOS Aqua,“.py“ is added for all files.)

Зберегти копію як…

  Save the current window to different file without changing the associated file. (See Save As note above about filename extensions.)

Вікно друку

  Роздрукувати поточне вікно на принтері за замовчуванням.

Закрити вікно

  Закрийте поточне вікно (якщо незбережений редактор, попросіть зберегти; якщо незбережений Shell, попросіть вийти з виконання). Виклик `exit()` або `close()` у вікні Shell також закриває Shell. Якщо це єдине вікно, також вийдіть з IDLE.

Вийти з IDLE

  Закрийте всі вікна та вийдіть з IDLE (попросіть зберегти незбережені вікна редагування).

### Меню редагування (оболонка та редактор)

Скасувати

  Скасувати останню зміну в поточному вікні. Можна скасувати не більше 1000 змін.

Повторити

  Повторити останню скасовану зміну в поточному вікні.

Вибрати все

  Виділіть увесь вміст поточного вікна.

Вирізати

  Копіювати виділення в загальносистемний буфер обміну; потім видаліть виділення.

Копія

  Копіювати виділення в загальносистемний буфер обміну.

Вставити

  Вставити вміст загальносистемного буфера обміну в поточне вікно.

Функції буфера обміну також доступні в контекстних меню.

знайти…

  Відкрийте діалогове вікно пошуку з багатьма параметрами

Знайти знову

  Повторіть останній пошук, якщо він є.

Знайти виділення

  Пошук поточного вибраного рядка, якщо він є.

Знайти у файлах…

  Відкрити діалогове вікно пошуку файлів. Помістіть результати в нове вікно виводу.

Замінити…

  Відкрийте діалогове вікно пошуку та заміни.

Перейдіть до лінії

  Перемістіть курсор на початок потрібного рядка та зробіть цей рядок видимим. Запит після кінця файлу переходить до кінця. Зніміть вибір і оновіть статус рядка та стовпця.

Показати завершення

  Відкрити прокручуваний список, що дозволяє вибрати існуючі імена. Перегляньте Completions у розділі «Редагування та навігація» нижче.

Розгорніть Word

  Розгорніть введений префікс, щоб відповідати повному слову в тому ж вікні; повторіть, щоб отримати інше розширення.

Show Call Tip

  Після незакритої дужки для функції відкривається невелике вікно з підказками параметрів функції. Див. Calltips у розділі «Редагування та навігація» нижче.

Show Surrounding Parens

  Виділіть оточуючі дужки.

### Меню «Формат» (лише вікно редактора)

Формат абзацу

  Переформатувати поточний розділений порожнім рядком абзац у блоці коментарів або багаторядковий рядок або виділений рядок у рядку. Усі рядки в абзаці будуть відформатовані до N стовпців, де N за умовчанням дорівнює 72.

Область відступу

  Зсунути виділені рядки праворуч на ширину відступу (за замовчуванням 4 пробіли).

Дедентська область

  Зсунути вибрані рядки вліво на ширину відступу (за замовчуванням 4 інтервали).

Регіон коментарів

  Вставте ## перед виділеними рядками.

Розкоментуйте регіон

  Видалити початковий # або ## з вибраних рядків.

Регіон Tabify

  Перетворіть початкові ділянки пробілів на вкладки. (Примітка: ми рекомендуємо використовувати 4 блоки пробілу для відступу коду Python.)

Розблокувати регіон

  Перетворіть усі вкладки на правильну кількість пробілів.

Перемикати вкладки

  Відкрийте діалогове вікно для перемикання між відступами за допомогою пробілів і табуляції.

Нова ширина відступу

  Відкрийте діалогове вікно, щоб змінити ширину відступу. Спільнота Python за замовчуванням приймає 4 пробіли.

Strip Trailing Chitespace

  Видаліть кінцеві пробіли та інші пробіли після останнього непробілного символу рядка, застосувавши str.rstrip до кожного рядка, включаючи рядки в багаторядкових рядках. За винятком вікон Shell, видаліть зайві нові рядки в кінці файлу.

### Меню «Виконати» (лише вікно редактора)

Запустити модуль

  Зробіть Перевірте модуль. Якщо помилки немає, перезапустіть оболонку, щоб очистити середовище, а потім запустіть модуль. Результати відображаються у вікні оболонки. Зауважте, що вихід вимагає використання `print` або `write`. Коли виконання завершено, оболонка зберігає фокус і відображає підказку. На цьому етапі можна інтерактивно досліджувати результат виконання. Це схоже на виконання файлу за допомогою `python -i file` у командному рядку.

Запуск… Налаштований

  Те саме, що Запустити модуль, але запустіть модуль із налаштованими налаштуваннями. Аргументи командного рядка розширюють `sys.argv` так, ніби передано в командному рядку. Модуль можна запускати в Shell без перезавантаження.

Перевірте модуль

  Перевірте синтаксис модуля, який зараз відкрито у вікні редактора. Якщо модуль не було збережено, IDLE запропонує користувачу зберегти або автоматично зберегти, як вибрано на вкладці «Загальні» діалогового вікна «Параметри очікування». Якщо є синтаксична помилка, у вікні редактора вказується приблизне розташування.

Python Shell

  Відкрийте або виведіть з режиму сну вікно Python Shell.

### Меню оболонки (лише вікно оболонки)

Переглянути останній перезапуск

  Прокрутіть вікно оболонки до останнього перезапуску оболонки.

Перезапустіть Shell

  Перезапустіть оболонку, щоб очистити середовище та скинути відображення та обробку винятків.

Попередня історія

  Переглядайте попередні команди в історії, які відповідають поточному запису.

Наступна історія

  Переглядайте наступні команди в історії, які відповідають поточному запису.

Перервати виконання

  Зупинка запущеної програми.

### Меню налагодження (лише вікно оболонки)

Перейдіть до Файл/Рядок

  Подивіться на поточний рядок. за допомогою курсора та рядок вище для імені файлу та номера рядка. Якщо знайдено, відкрийте файл, якщо він ще не відкритий, і покажіть рядок. Використовуйте це, щоб переглянути вихідні рядки, на які посилаються у зворотному відстеження винятків, і рядки, знайдені за допомогою функції «Знайти у файлах». Також доступний у контекстному меню вікна оболонки та вікон виведення.

Налагоджувач (перемикач)

  Після активації код, введений в оболонку або запущений із редактора, запускатиметься під налагоджувачем. У редакторі точки зупину можна встановити за допомогою контекстного меню. Ця функція ще не завершена і дещо експериментальна.

Переглядач стека

  Показати зворотне трасування стека останнього винятку у віджеті дерева з доступом до локальних і глобальних.

Автоматичне відкриття Stack Viewer

  Увімкнути автоматичне відкриття засобу перегляду стеків у разі необробленого винятку.

### Меню параметрів (оболонка та редактор)

Налаштувати IDLE

  Відкрийте діалогове вікно конфігурації та змініть такі параметри: шрифти, відступи, сполучення клавіш, теми кольорів тексту, початкові вікна та розмір, додаткові джерела довідки та розширення. У macOS відкрийте діалогове вікно налаштування, вибравши «Параметри» в меню програми. Для отримання додаткової інформації див. Налаштування налаштувань у розділі Довідка та налаштування.

Більшість параметрів конфігурації застосовуються до всіх вікон або всіх майбутніх вікон. Наведені нижче параметри застосовуються лише до активного вікна.

Показати/приховати контекст коду (лише у вікні редактора)

  Відкрийте панель у верхній частині вікна редагування, яка показує контекст блоку коду, який прокручується над верхньою частиною вікна. Див. Контекст коду у розділі «Редагування та навігація» нижче.

Показати/приховати номери рядків (лише у вікні редактора)

  Відкрийте стовпець ліворуч від вікна редагування, у якому показано номер кожного рядка тексту. За замовчуванням вимкнено, що можна змінити в налаштуваннях (див. Налаштування параметрів).

Збільшити/відновити висоту

  Перемикає вікно між нормальним розміром і максимальною висотою. Початковий розмір за замовчуванням становить 40 рядків по 80 символів, якщо не змінено на вкладці «Загальні» діалогового вікна «Налаштувати IDLE». Максимальна висота екрана визначається миттєвим розгортанням вікна під час першого збільшення на екрані. Зміна налаштувань екрана може призвести до втрати збереженої висоти. Цей перемикач не діє, коли вікно розгорнуто.

### Меню «Вікно» (оболонка та редактор)

Перераховує назви всіх відкритих вікон; виберіть один, щоб вивести його на передній план (деіконіфікуючи його, якщо необхідно).

### Меню «Довідка» (Shell і Editor)

Про IDLE

  Версія для відображення, авторські права, ліцензія, авторство тощо.

Довідка IDLE

  Відобразіть цей IDLE-документ із детальним описом параметрів меню, базового редагування та навігації та іншими порадами.

Документи Python

  Отримайте доступ до локальної документації Python, якщо її встановлено, або запустіть веб-браузер і відкрийте docs.python.org, де показано останню документацію Python.

Черепаха демо

  Запустіть модуль turtledemo з прикладом коду Python і малюнками черепахи.

Тут можна додати додаткові джерела довідки за допомогою діалогового вікна «Налаштувати IDLE» на вкладці «Загальні». Перегляньте підрозділ Джерела довідки нижче, щоб дізнатися більше про пункти меню «Довідка».

### Context menus

Відкрийте контекстне меню, клацнувши правою кнопкою миші у вікні (клацніть, утримуючи Control у macOS). Контекстні меню мають стандартні функції буфера обміну також у меню Правка.

Вирізати

  Копіювати виділення в загальносистемний буфер обміну; потім видаліть виділення.

Копія

  Копіювати виділення в загальносистемний буфер обміну.

Вставити

  Вставити вміст загальносистемного буфера обміну в поточне вікно.

Вікна редактора також мають функції точки зупинки. Рядки з встановленою точкою розриву спеціально позначені. Точки зупину діють лише під час роботи під налагоджувачем. Точки зупину для файлу зберігаються в каталозі користувача `.idlerc`.

Встановити точку зупину

  Встановити точку зупину на поточному рядку.

Очистити точку зупину

  Очистіть точку розриву на цьому рядку.

Вікна Shell і Output також мають наступне.

Перейти до файлу/рядка

  Те саме, що в меню Debug.

Вікно Shell також має функцію стискання виводу, пояснену в підрозділі Вікно Python Shell нижче.

Стиснути

  Якщо курсор знаходиться над рядком виводу, стисніть увесь вивід між кодом вище та підказкою внизу до мітки «Стиснутий текст».

## Editing and Navigation

### Вікна редактора

IDLE може відкривати вікна редактора під час запуску, залежно від налаштувань і способу запуску IDLE. Після цього скористайтеся меню «Файл». Для певного файлу може бути лише одне відкрите вікно редактора.

Рядок заголовка містить ім’я файлу, повний шлях і версію Python та IDLE, у яких запущено вікно. Рядок стану містить номер рядка („Ln“) і номер стовпця („Col“). Номери рядків починаються з 1; номери стовпців з 0.

IDLE передбачає, що файли з відомим розширенням .py* містять код Python, а інші файли його не містять. Запустіть код Python за допомогою меню «Виконати».

### Прив’язки клавіш

The IDLE insertion cursor is a thin vertical bar between character positions. When characters are entered, the insertion cursor and everything to its right moves right one character and the new character is entered in the new space.

Several non-character keys move the cursor and possibly delete characters. Deletion does not puts text on the clipboard, but IDLE has an undo list. Wherever this doc discusses keys, „C“ refers to the `Control` key on Windows and Unix and the `Command` key on macOS. (And all such discussions assume that the keys have not been re-bound to something else.)

- Arrow keys move the cursor one character or line.

- `C`-`LeftArrow` and `C`-`RightArrow` moves left or right one word.

- `Home` and `End` go to the beginning or end of the line.

- `Page Up` and `Page Down` go up or down one screen.

- `C`-`Home` and `C`-`End` go to beginning or end of the file.

- `Backspace` and `Del` (or `C`-`d`) delete the previous or next character.

- `C`-`Backspace` and `C`-`Del` delete one word left or right.

- `C`-`k` deletes („kills“) everything to the right.

Стандартні комбінації клавіш (наприклад, `C`-`c` для копіювання та `C`-`v` для вставлення) можуть працювати. Сполучення клавіш вибираються в діалоговому вікні «Налаштувати IDLE».

### Автоматичний відступ

Після оператора відкриття блоку наступний рядок має відступ на 4 пробіли (у вікні оболонки Python на одну вкладку). Після певних ключових слів (break, return тощо) у наступному рядку робиться відступ. У початковому відступі `Backspace` видаляє до 4 пробілів, якщо вони є. `Tab` вставляє пробіли (у вікні оболонки Python одна табуляція), кількість залежить від ширини відступу. Наразі табуляції обмежені чотирма пробілами через обмеження Tcl/Tk.

Дивіться також команди області відступу/відступу в меню Формат.

### Пошук і заміна

Any selection becomes a search target. However, only selections within a line work because searches are only performed within lines with the terminal newline removed. If `[x] Regular expression` is checked, the target is interpreted according to the Python re module.

### Доробки

Завершення надаються, коли це потрібно та доступно, для імен модулів, атрибутів класів або функцій або імен файлів. Кожен метод запиту відображає вікно завершення з існуючими назвами. (Див. завершення вкладок нижче для винятку.) Для будь-якого поля змініть ім’я, що заповнюється, і елемент, виділений у полі, вводячи та видаляючи символи; натисканням клавіш `Up`, `Down`, `PageUp`, `PageDown`, `Home` і `End`; і одним клацанням у полі. Закрийте поле за допомогою `Escape`, `Enter` і подвійних клавіш `Tab` або клацань за межами поля. Подвійне клацання в полі вибирає та закриває.

Один із способів відкрити вікно - це ввести символ ключа та почекати заздалегідь визначений інтервал. За замовчуванням це 2 секунди; налаштувати його в діалоговому вікні налаштувань. (Щоб запобігти автоматичним спливаючим вікнам, установіть для затримки велику кількість мілісекунд, наприклад 100000000.) Для імпортованих імен модулів або атрибутів класу чи функції введіть «.». Для імен файлів у кореневому каталозі введіть `os.sep` або `os.altsep` одразу після початкової лапки. (У Windows спочатку можна вказати диск.) Переходьте до підкаталогів, вводячи назву каталогу та роздільник.

Замість того, щоб чекати або після закриття вікна, негайно відкрийте вікно завершення за допомогою «Показати завершення» в меню «Правка». Типовою гарячою клавішею є `C`-`пробіл`. Якщо перед відкриттям вікна ввести префікс для потрібного імені, стане видимим перший збіг або майже промах. Результат такий самий, як і при введенні префікса після відображення поля. Показувати завершення після того, як цитата завершує імена файлів у поточному каталозі замість кореневого каталогу.

Натискання `Tab` після префікса зазвичай має той самий ефект, що й Показати завершення. (Без префікса робиться відступ.) Однак, якщо існує лише один збіг із префіксом, цей збіг негайно додається до тексту редактора без відкриття поля.

Виклик «Показати завершення» або натискання `Tab` після префікса, поза рядком і без попереднього „.“ відкриває вікно з ключовими словами, вбудованими назвами та доступними назвами рівня модулів.

Під час редагування коду в редакторі (на відміну від Shell) збільште доступні імена на рівні модулів, запустивши свій код і не перезапускаючи Shell після цього. Це особливо корисно після додавання імпорту у верхній частині файлу. Це також збільшує можливі завершення атрибутів.

Поля завершення спочатку виключають імена, що починаються з „_“ або, для модулів, не включені в „__all__“. Доступ до прихованих імен можна отримати, ввівши «_» після «.» до або після відкриття вікна.

### Підказки

Підказка відображається автоматично, коли вводиться `(` після назви доступної функції. Вираз назви функції може включати крапки та нижні індекси. Підказка залишається, доки її не клацнуть, курсор переміщується за межі аргументу область, або `)` вводиться. Щоразу, коли курсор знаходиться в частині аргументів визначення, виберіть у меню «Редагувати» та «Показати підказку виклику» або введіть відповідний ярлик, щоб відобразити підказку виклику.

Підказка складається з підпису функції та рядка документації до першого порожнього рядка останнього або п’ятого непорожнього рядка. (Деякі вбудовані функції не мають доступного підпису.) «/» або «*» у підписі вказує на те, що попередні або наступні аргументи передаються лише за позицією чи назвою (ключовим словом). Деталі можуть бути змінені.

У Shell доступні функції залежать від того, які модулі було імпортовано в процес користувача, включно з тими, що імпортовані самим Idle, і які визначення були запущені з моменту останнього перезапуску.

Наприклад, перезапустіть оболонку та введіть `itertools.count(`. З’являється підказка, тому що Idle імпортує itertools у процес користувача для власного використання. (Це може змінитися.) Введіть `turtle.write(` і нічого Idle сам по собі не імпортує черепаху. Пункт меню та ярлик також нічого не роблять. Введіть `import turtle`. Після цього `turtle.write(` відобразить підказку.

У редакторі оператори імпорту не діють, доки не буде запущено файл. Хтось може захотіти запустити файл після написання операторів імпорту, після додавання визначень функцій або після відкриття існуючого файлу.

### Контекст коду

У вікні редактора, що містить код Python, контекст коду можна перемикати, щоб показати або приховати панель у верхній частині вікна. Коли відображається, ця панель заморожує початкові рядки для блокового коду, наприклад тих, що починаються ключовими словами `class`, `def` або `if`, які інакше були б прокручені за межами поля зору. Розмір панелі буде розширено та звужено за потреби, щоб показати всі поточні рівні контексту, до максимальної кількості рядків, визначеної в діалоговому вікні «Налаштування IDLE» (яке за замовчуванням дорівнює 15). Якщо немає поточних контекстних рядків і функцію ввімкнено, відобразиться один порожній рядок. Клацання рядка в контекстній панелі перемістить цей рядок у верхню частину редактора.

Кольори тексту та фону для контекстної панелі можна налаштувати на вкладці Highlights у діалоговому вікні Configure IDLE.

### Shell window

In IDLE’s Shell, enter, edit, and recall complete statements. (Most consoles and terminals only work with a single physical line at a time).

Submit a single-line statement for execution by hitting `Return` with the cursor anywhere on the line. If a line is extended with Backslash (`\`), the cursor must be on the last physical line. Submit a multi-line compound statement by entering a blank line after the statement.

When one pastes code into Shell, it is not compiled and possibly executed until one hits `Return`, as specified above. One may edit pasted code first. If one pastes more than one statement into Shell, the result will be a `SyntaxError` when multiple statements are compiled as if they were one.

Lines containing `RESTART` mean that the user execution process has been re-started. This occurs when the user execution process has crashed, when one requests a restart on the Shell menu, or when one runs code in an editor window.

The editing features described in previous subsections work when entering code interactively. IDLE’s Shell window also responds to the following:

- `C`-`c` attempts to interrupt statement execution (but may fail).

- `C`-`d` closes Shell if typed at a `>>>` prompt.

- `Alt`-`p` and `Alt`-`n` (`C`-`p` and `C`-`n` on macOS) retrieve to the current prompt the previous or next previously entered statement that matches anything already typed.

- `Return` while the cursor is on any previous statement appends the latter to anything already typed at the prompt.

### Кольори тексту

Неактивний за замовчуванням чорним на білому тексті, але кольоровий текст зі спеціальними значеннями. Для оболонки це вивід оболонки, помилка оболонки, вивід користувача та помилка користувача. Для коду Python, у командному рядку або в редакторі, це ключові слова, вбудовані імена класів і функцій, імена після `class` і `def`, рядки та коментарі. Для будь-якого текстового вікна це курсор (якщо є), знайдений текст (якщо можливо) і виділений текст.

IDLE також виділяє м’які ключові слова `match`, `case` і `_` в операторах зіставлення шаблонів. Однак це підсвічування не є ідеальним і буде неправильним у деяких рідкісних випадках, включаючи деякі `_`-s у шаблонах `case`.

Фарбування тексту виконується у фоновому режимі, тому час від часу видно нерозфарбований текст. Щоб змінити колірну схему, скористайтеся вкладкою підсвічування діалогового вікна налаштування IDLE. Позначення рядків точок зупину налагоджувача в редакторі та тексту в спливаючих і діалогових вікнах не можна налаштувати користувачем.

## Startup and Code Execution

Після запуску з опцією `-s` IDLE виконає файл, на який посилаються змінні середовища `IDLESTARTUP` або `PYTHONSTARTUP`. IDLE спочатку перевіряє `IDLESTARTUP`; якщо `IDLESTARTUP` присутній, запускається файл, на який посилається. Якщо `IDLESTARTUP` відсутній, IDLE перевіряє `PYTHONSTARTUP`. Файли, на які посилаються ці змінні середовища, є зручними місцями для зберігання функцій, які часто використовуються з оболонки IDLE, або для виконання операторів імпорту для імпорту загальних модулів.

Крім того, `Tk` також завантажує файл запуску, якщо він присутній. Зауважте, що файл Tk завантажується без умов. Цей додатковий файл має назву `.Idle.py` і його шукають у домашньому каталозі користувача. Інструкції в цьому файлі виконуватимуться в просторі імен Tk, тому цей файл не корисний для імпорту функцій, які будуть використовуватися з оболонки IDLE Python.

### Використання командного рядка

IDLE can be invoked from the command line with various options. The general syntax is:

    python -m idlelib [options] [file ...]

The following options are available:

-c <command>

  Run the specified Python command in the shell window. For example, pass `-c "print('Hello, World!')"`. On Windows, the outer quotes must be double quotes as shown.

-d

  Enable the debugger and open the shell window.

-e

  Open an editor window.

-h

  Print a help message with legal combinations of options and exit.

-i

  Open a shell window.

-r <file>

  Run the specified file in the shell window.

-s

  Run the startup file (as defined by the environment variables `IDLESTARTUP` or `PYTHONSTARTUP`) before opening the shell window.

-t <title>

  Set the title of the shell window.

-

  Read and execute standard input in the shell window. This option must be the last one before any arguments.

If arguments are provided:

- If `-`, `-c`, or `-r` is used, all arguments are placed in `sys.argv[1:]`, and `sys.argv[0]` is set to `''`, `'-c'`, or `'-r'` respectively. No editor window is opened, even if that is the default set in the Options dialog.

- Otherwise, arguments are treated as files to be opened for editing, and `sys.argv` reflects the arguments passed to IDLE itself.

### Помилка запуску

IDLE використовує сокет для зв’язку між процесом IDLE GUI і процесом виконання коду користувача. Під час кожного запуску або перезапуску оболонки потрібно встановлювати з’єднання. (Останнє позначається розділювальною лінією з написом «ПЕРЕЗАПУСТИТИ»). Якщо процесу користувача не вдається підключитися до процесу графічного інтерфейсу, він зазвичай відображає вікно помилки `Tk` із повідомленням «неможливо підключитися», яке спрямовує користувача сюди. Потім він виходить.

Одна конкретна помилка з’єднання в системах Unix є результатом неправильно налаштованих правил маскування десь у налаштуваннях мережі системи. Коли IDLE запускається з терміналу, ви побачите повідомлення, що починається з `** Invalid host:`. Дійсним значенням є `127.0.0.1 (idlelib.rpc.LOCALHOST)`. Можна діагностувати за допомогою `tcpconnect -irv 127.0.0.1 6543` в одному вікні терміналу і `tcplisten <same args>` в іншому.

Поширеною причиною збою є написаний користувачем файл із такою ж назвою, як стандартний бібліотечний модуль, наприклад random.py і tkinter.py. Якщо такий файл знаходиться в тому ж каталозі, що й файл, який збирається запустити, IDLE не може імпортувати файл stdlib. Поточне виправлення полягає в перейменуванні файлу користувача.

Хоча це рідше, ніж у минулому, антивірусна програма чи брандмауер можуть зупинити з’єднання. Якщо програму не можна навчити дозволяти підключення, її потрібно вимкнути, щоб IDLE працював. Можна безпечно дозволити це внутрішнє з’єднання, оскільки на зовнішніх портах не видно жодних даних. Подібною проблемою є неправильна конфігурація мережі, яка блокує підключення.

Проблеми з інсталяцією Python іноді зупиняють IDLE: кілька версій можуть конфліктувати, або для однієї інсталяції може знадобитися доступ адміністратора. Якщо хтось скасував зіткнення або не може або не хоче запускатися від імені адміністратора, можливо, найлегше буде повністю видалити Python і почати заново.

Процес зомбі pythonw.exe може бути проблемою. У Windows скористайтеся диспетчером завдань, щоб перевірити його наявність і зупинити його, якщо він є. Іноді перезапуск, ініційований збоєм програми або перериванням клавіатури (control-C), може не вдатися до з’єднання. Закриття вікна помилки або використання Restart Shell у меню Shell може вирішити тимчасову проблему.

Коли IDLE запускається вперше, він намагається прочитати конфігураційні файли користувача в `~/.idlerc/` (~ це домашній каталог). У разі виникнення проблеми має з’явитися повідомлення про помилку. Залишаючи осторонь випадкові збої диска, цьому можна запобігти, якщо ніколи не редагувати файли вручну. Замість цього скористайтеся діалоговим вікном конфігурації в розділі «Параметри». Якщо у файлі конфігурації користувача виникла помилка, найкращим рішенням може бути видалення його та початок заново з діалогового вікна налаштувань.

Якщо IDLE завершує роботу без повідомлення, і його не було запущено з консолі, спробуйте запустити його з консолі або терміналу (`python -m idlelib`) і перевірте, чи це призведе до повідомлення про помилку.

У системах на базі Unix із tcl/tk, старшим за `8.6.11` (див. `Про IDLE`), певні символи певних шрифтів можуть викликати помилку tk із повідомленням на термінал. Це може статися або під час запуску IDLE для редагування файлу з таким символом, або пізніше під час введення такого символу. Якщо неможливо оновити tcl/tk, переконфігуруйте IDLE, щоб використовувати шрифт, який працює краще.

### Виконується код користувача

За рідкісними винятками, результат виконання коду Python за допомогою IDLE має бути таким самим, як і виконання того самого коду методом за замовчуванням, безпосередньо за допомогою Python у системній консолі текстового режиму або у вікні терміналу. Однак різний інтерфейс і робота іноді впливають на видимі результати. Наприклад, `sys.modules` починається з більшої кількості записів, а `threading.active_count()` повертає 2 замість 1.

За замовчуванням IDLE запускає код користувача в окремому процесі ОС, а не в процесі інтерфейсу користувача, який запускає оболонку та редактор. У процесі виконання він замінює `sys.stdin`, `sys.stdout` і `sys.stderr` на об’єкти, які отримують вхідні дані з вікна Shell і надсилають вихідні дані до нього. Вихідні значення, збережені в `sys.__stdin__`, `sys.__stdout__` і `sys.__stderr__`, не змінюються, але можуть бути `None`.

Надсилання результатів друку від одного процесу до текстового віджета в іншому відбувається повільніше, ніж друк до системного терміналу в тому самому процесі. Це має найбільший ефект під час друку кількох аргументів, оскільки рядок для кожного аргументу, кожен роздільник і новий рядок надсилаються окремо. Для розробки це зазвичай не проблема, але якщо хтось хоче друкувати швидше в IDLE, відформатуйте та об’єднайте все, що потрібно відобразити разом, а потім надрукуйте один рядок. І рядки формату, і `str.join()` можуть допомогти поєднати поля та рядки.

IDLE’s standard stream replacements are not inherited by subprocesses created in the execution process, whether directly by user code or by modules such as multiprocessing. If such subprocess use `input` from sys.stdin or `print` or `write` to sys.stdout or sys.stderr, IDLE should be started in a command line window. (On Windows, use `python` or `py` rather than `pythonw` or `pyw`.) The secondary subprocess will then be attached to that window for input and output.

Якщо `sys` скидається кодом користувача, наприклад, `importlib.reload(sys)`, зміни IDLE втрачаються, а введення з клавіатури та виведення на екран працюватимуть некоректно.

Коли Shell має фокус, він керує клавіатурою та екраном. Зазвичай це прозоро, але функції, які мають прямий доступ до клавіатури та екрана, не працюватимуть. До них входять специфічні для системи функції, які визначають, чи була натиснута клавіша, і якщо так, то яку.

IDLE-код, що виконується в процесі виконання, додає кадри до стеку викликів, яких інакше там не було б. IDLE обертає `sys.getrecursionlimit` і `sys.setrecursionlimit`, щоб зменшити ефект додаткових кадрів стеку.

Коли код користувача викликає SystemExit безпосередньо або шляхом виклику sys.exit, IDLE повертається до підказки Shell замість виходу.

### Вивід користувача в Shell

Коли програма виводить текст, результат визначається відповідним пристроєм виведення. Коли IDLE виконує код користувача, `sys.stdout` і `sys.stderr` підключаються до області відображення оболонки IDLE. Деякі з його функцій успадковано від основного віджета Tk Text. Інші є запрограмованими доповненнями. Там, де це важливо, Shell призначена для розробки, а не для виробництва.

Наприклад, Shell ніколи не викидає вихідні дані. Програма, яка надсилає необмежений вихід до Shell, зрештою заповнить пам’ять, що призведе до помилки пам’яті. Навпаки, деякі системні текстові вікна зберігають лише останні n рядків виводу. Консоль Windows, наприклад, зберігає встановлені користувачем від 1 до 9999 рядків, з 300 за замовчуванням.

Віджет Tk Text, а отже, оболонка IDLE, відображає символи (кодові точки) у підмножині BMP (Basic Multilingual Plane) Unicode. Які символи відображаються з правильним гліфом, а які з полем заміни, залежить від операційної системи та встановлених шрифтів. Символи табуляції викликають початок наступного тексту після наступної позиції табуляції. (Вони зустрічаються кожні 8 «символів»). Символи нового рядка призводять до появи наступного тексту на новому рядку. Інші керуючі символи ігноруються або відображаються у вигляді пробілу, прямокутника або іншого, залежно від операційної системи та шрифту. (Переміщення текстового курсору через такий вивід за допомогою клавіш зі стрілками може продемонструвати деяку дивовижну поведінку інтервалів.)

    >>> s = 'a\tb\a<\x02><\r>\bc\nd'  # Enter 22 chars.
    >>> len(s)
    14
    >>> s  # Display repr(s)
    'a\tb\x07<\x02><\r>\x08c\nd'
    >>> print(s, end='')  # Display s as is.
    # Result varies by OS and font.  Try it.

Функція `repr` використовується для інтерактивного відлуння значень виразів. Він повертає змінену версію вхідного рядка, у якій керуючі коди, деякі кодові точки BMP і всі кодові точки, відмінні від BMP, замінено на вихідні коди. Як показано вище, це дозволяє ідентифікувати символи в рядку, незалежно від того, як вони відображаються.

Звичайний і помилковий вихід зазвичай зберігаються окремо (в окремих рядках) від введення коду та один від одного. Кожен з них отримує різні кольори виділення.

Для зворотного відстеження SyntaxError звичайне маркування «^», де було виявлено помилку, замінюється фарбуванням тексту з виділенням помилки. Коли код, запущений із файлу, викликає інші винятки, можна клацнути правою кнопкою миші на рядку трасування, щоб перейти до відповідного рядка в редакторі IDLE. При необхідності файл буде відкрито.

Shell має спеціальний засіб для стискання вихідних рядків до мітки «Стиснутий текст». Це робиться автоматично для виведення через N рядків (N = 50 за замовчуванням). N можна змінити в розділі PyShell на сторінці «Загальні» діалогового вікна «Параметри». Вихідні дані з меншою кількістю рядків можна стиснути, клацнувши на виводі правою кнопкою миші. Це можуть бути корисні рядки, достатні для сповільнення прокручування.

Стиснутий вихід розгортається на місці подвійним клацанням мітки. Його також можна відправити в буфер обміну або в окреме вікно перегляду, клацнувши правою кнопкою миші на мітці.

### Розробка додатків tkinter

IDLE навмисно відрізняється від стандартного Python, щоб полегшити розробку програм tkinter. Введіть `import tkinter as tk; root = tk.Tk()` у стандартному Python, і нічого не відображається. Введіть те саме в IDLE, і з’явиться вікно tk. У стандартному Python потрібно також ввести `root.update()`, щоб побачити вікно. IDLE виконує еквівалент у фоновому режимі, приблизно 20 разів на секунду, тобто кожні 50 мілісекунд. Далі введіть `b = tk.Button(root, text='button'); b.pack()`. Знову ж таки, у стандартному Python нічого помітно не змінюється, доки не буде введено `root.update()`.

Більшість програм tkinter запускають `root.mainloop()`, який зазвичай не повертається, доки не буде знищено програму tk. Якщо програма запускається за допомогою `python -i` або з редактора IDLE, підказка оболонки `>>>` не з’являється, доки не повернеться `mainloop()`, після чого не залишиться нічого для взаємодіяти з.

Під час запуску програми tkinter із редактора IDLE можна закоментувати виклик основного циклу. Після цього користувач одразу отримує підказку оболонки та може взаємодіяти з живою програмою. Треба лише не забувати знову ввімкнути виклик основного циклу під час роботи на стандартному Python.

### Запуск без підпроцесу

За замовчуванням IDLE виконує код користувача в окремому підпроцесі через сокет, який використовує внутрішній інтерфейс петлі. Це з’єднання не видно зовні, і дані не надсилаються та не отримуються з Інтернету. Якщо програмне забезпечення брандмауера все одно скаржиться, ви можете ігнорувати це.

Якщо спроба підключитися до сокета не вдається, Idle повідомить вас. Такі збої іноді тимчасові, але якщо вони постійні, проблемою може бути брандмауер, який блокує з’єднання, або неправильна конфігурація певної системи. Поки проблему не буде вирішено, можна запускати Idle з перемикачем командного рядка -n.

Якщо IDLE запущено з параметром командного рядка -n, він виконуватиметься в одному процесі та не створюватиме підпроцес, який запускає сервер виконання RPC Python. Це може бути корисним, якщо Python не може створити підпроцес або інтерфейс сокета RPC на вашій платформі. Однак у цьому режимі код користувача не ізольований від самого IDLE. Крім того, середовище не перезапускається, якщо вибрано Run/Run Module (F5). Якщо ваш код було змінено, ви повинні reload() відповідні модулі та повторно імпортувати будь-які конкретні елементи (наприклад, з foo import baz), щоб зміни набули чинності. З цих причин бажано запускати IDLE із підпроцесом за замовчуванням, якщо це взагалі можливо.

Застаріло починаючи з версії 3.4.

## Help and Preferences

### Довідкові джерела

Пункт меню «Довідка» «Довідка IDLE» відображає відформатовану html-версію розділу IDLE довідника бібліотеки. Результат у текстовому вікні tkinter, доступному лише для читання, близький до того, що можна побачити у веб-браузері. Переміщайтеся по тексту за допомогою коліщатка миші, смуги прокручування або натиснутих клавіш зі стрілками вгору та вниз. Або натисніть кнопку Зміст (Зміст) і виберіть заголовок розділу у вікні, що відкриється.

Пункт меню «Довідка» «Документи Python» відкриває обширні джерела довідки, включаючи навчальні посібники, доступні за адресою `docs.python.org/x.y`, де «x.y» — поточна версія Python. Якщо у вашій системі є офлайнова копія документів (це може бути варіант інсталяції), вона буде відкрита натомість.

Вибрані URL-адреси можна будь-коли додати або видалити з меню довідки за допомогою вкладки «Загальні» діалогового вікна «Налаштувати IDLE».

### Встановлення налаштувань

Параметри шрифту, підсвічування, клавіші та загальні параметри можна змінити за допомогою Configure IDLE у меню Option. Параметри користувача, відмінні від стандартних, зберігаються в каталозі `.idlerc` у домашньому каталозі користувача. Проблеми, спричинені неправильними конфігураційними файлами користувача, вирішуються редагуванням або видаленням одного чи кількох файлів у `.idlerc`.

На вкладці «Шрифт» перегляньте зразок тексту, щоб дізнатися про вплив накреслення та розміру шрифту на кілька символів різними мовами. Відредагуйте зразок, щоб додати інших персонажів, які вас цікавлять. Використовуйте зразок для вибору моноширинних шрифтів. Якщо певні символи мають проблеми в Shell або редакторі, додайте їх у верхній частині зразка та спробуйте змінити спочатку розмір, а потім шрифт.

На вкладці «Висвітлення та ключі» виберіть вбудовану або спеціальну колірну тему та набір ключів. Щоб використовувати новішу вбудовану колірну тему або набір ключів зі старішими IDLE, збережіть їх як нову спеціальну тему або набір ключів, щоб вони були доступні для старіших IDLE.

### IDLE на macOS

У розділі «Системні параметри: Док» можна встановити «Надавати перевагу вкладкам під час відкриття документів» на «Завжди». Цей параметр несумісний із фреймворком графічного інтерфейсу tk/tkinter, який використовується IDLE, і порушує роботу кількох функцій IDLE.

### Розширення

IDLE містить можливість розширення. Налаштування для розширень можна змінити на вкладці Розширення діалогового вікна налаштувань. Дивіться початок config-extensions.def у каталозі idlelib для отримання додаткової інформації. Єдиним поточним розширенням за замовчуванням є zzdummy, приклад також використовується для тестування.

## idlelib — implementation of IDLE application

Source code: Lib/idlelib

The Lib/idlelib package implements the IDLE application. See the rest of this page for how to use IDLE.

The files in idlelib are described in idlelib/README.txt. Access it either in idlelib or click Help => About IDLE on the IDLE menu. This file also maps IDLE menu items to the code that implements the item. Except for files listed under „Startup“, the idlelib code is „private“ in sense that feature changes can be backported (see PEP 434).