Ce document est relatif à une vieille version de Python qui n'est plus soutenue. Mettez à jour votre version et lisez Bienvenue sur la documentation de la version stable actuelle de Python.

# IDLE

Code source : Lib/idlelib/

IDLE est l'environnement de développement et d'apprentissage intégré de Python (Integrated Development and Learning Environment).

IDLE a les fonctionnalités suivantes :

- codé à 100% en pur Python, en utilisant l'outil d'interfaçage graphique `tkinter`

- multi-plateformes : fonctionne de la même manière sous Windows, Unix et macOS

- Console Python (interpréteur interactif) avec coloration du code entré, des sorties et des messages d'erreur

- éditeur de texte multi-fenêtres avec annulations multiples, coloration Python, indentation automatique, aide pour les appels de fonction, autocomplétion, parmi d'autres fonctionnalités

- recherche dans n'importe quelle fenêtre, remplacement dans une fenêtre d'édition et recherche dans des fichiers multiples (grep)

- débogueur avec points d'arrêt persistants, pas-à-pas et visualisation des espaces de nommage locaux et globaux

- configuration, navigateur et d'autres fenêtres de dialogue

## Menus

IDLE a deux principaux types de fenêtre, la fenêtre de console et la fenêtre d'édition. Il est possible d'avoir de multiples fenêtres d'édition ouvertes simultanément. Sous Windows et Linux, chacune a son propre menu. Chaque menu documenté ci-dessous indique à quel type de fenêtre il est associé.

Les fenêtre d'affichage, comme celles qui sont utilisées pour Edit => Find in Files, sont un sous-type de fenêtre d'édition. Elles possèdent actuellement le même menu principal mais un titre par défaut et un menu contextuel différents.

Sous macOS, il y a un menu d'application. Il change dynamiquement en fonction de la fenêtre active. Il a un menu IDLE et certaines entrées décrites ci-dessous sont déplacées conformément aux directives d'Apple.

### Menu File (Console et Éditeur)

New File

  Crée une nouvelle fenêtre d'édition.

Open...

  Ouvre un fichier existant avec une fenêtre de dialogue pour l'ouverture.

Recent Files

  Ouvre une liste des fichiers récents. Cliquez sur l'un d'eux pour l'ouvrir.

Open Module...

  Ouvre un module existant (cherche dans sys.path).

Class Browser

  Montre les fonctions, classes et méthodes dans une arborescence pour le fichier en cours d'édition. Dans la console, ouvre d'abord un module.

Path Browser

  Affiche les dossiers de sys.path, les modules, fonctions, classes et méthodes dans une arborescence.

Save

  Enregistre la fenêtre active sous le fichier associé, s'il existe. Les fenêtres qui ont été modifiées depuis leur ouverture ou leur dernier enregistrement ont un * avant et après le titre de la fenêtre. S'il n'y a aucun fichier associé, exécute Save As à la place.

Save As...

  Enregistre la fenêtre active avec une fenêtre de dialogue d'enregistrement. Le fichier enregistré devient le nouveau fichier associé pour cette fenêtre.

Save Copy As...

  Enregistre la fenêtre active sous un fichier différent sans changer le fichier associé.

Print Window

  Imprime la fenêtre active avec l'imprimante par défaut.

Close

  Ferme la fenêtre active (demande à enregistrer si besoin).

Exit

  Ferme toutes les fenêtres et quitte IDLE (demande à enregistrer les fenêtres non sauvegardées).

### Menu Edit (console et éditeur)

Undo

  Annule le dernier changement dans la fenêtre active. Un maximum de 1000 changements peut être annulé.

Redo

  Ré-applique le dernier changement annulé dans la fenêtre active.

Cut

  Copie la sélection dans le presse-papier global ; puis supprime la sélection.

Copy

  Copie la sélection dans le presse-papier global.

Paste

  Insère le contenu du presse-papier global dans la fenêtre active.

Les fonctions du presse-papier sont aussi disponibles dans les menus contextuels.

Select All

  Sélectionne la totalité du contenu de la fenêtre active.

Find...

  Ouvre une fenêtre de recherche avec de nombreuses options

Find Again

  Répète la dernière recherche, s'il y en a une.

Find Selection

  Cherche la chaîne sélectionnée, s'il y en a une.

Find in Files...

  Ouvre une fenêtre de recherche de fichiers. Présente les résultats dans une nouvelle fenêtre d'affichage.

Replace...

  Ouvre une fenêtre de recherche et remplacement.

Go to Line

  Move the cursor to the beginning of the line requested and make that line visible. A request past the end of the file goes to the end. Clear any selection and update the line and column status.

Show Completions

  Ouvre une liste navigable permettant la sélection de mots-clefs et attributs. Reportez-vous à Complétions dans la section Édition et navigation ci-dessous.

Expand Word

  Complète un préfixe que vous avez saisi pour correspondre à un mot complet de la même fenêtre ; recommencez pour obtenir un autre complément.

Show call tip

  Après une parenthèse ouverte pour une fonction, ouvre une petite fenêtre avec des indications sur les paramètres de la fonction. Reportez-vous à Aides aux appels dans la section Édition et navigation ci-dessous.

Show surrounding parens

  Surligne les parenthèses encadrantes.

### Menu Format (fenêtre d'édition uniquement)

Indent Region

  Décale les lignes sélectionnées vers la droite d'un niveau d'indentation (4 espaces par défaut).

Dedent Region

  Décale les lignes sélectionnées vers la gauche d'un niveau d'indentation (4 espaces par défaut).

Comment Out Region

  Insère ## devant les lignes sélectionnées.

Uncomment Region

  Enlève les # ou ## au début des lignes sélectionnées.

Tabify Region

  Transforme les blocs d'espaces au début des lignes en tabulations. (Note : Nous recommandons d'utiliser des blocs de 4 espaces pour indenter du code Python.)

Untabify Region

  Transforme toutes les tabulations en le bon nombre d'espaces.

Toggle Tabs

  Ouvre une boîte de dialogue permettant de passer des espaces aux tabulations (et inversement) pour l'indentation.

New Indent Width

  Ouvre une boîte de dialogue pour changer la taille de l'indentation. La valeur par défaut acceptée par la communauté Python est de 4 espaces.

Format Paragraph

  Reformate le paragraphe actif, délimité par des lignes vides, en un bloc de commentaires, ou la chaîne de caractères multi-lignes ou ligne sélectionnée en chaîne de caractères. Toutes les lignes du paragraphe seront formatées à moins de N colonnes, avec N valant 72 par défaut.

Strip trailing whitespace

  Remove trailing space and other whitespace characters after the last non-whitespace character of a line by applying str.rstrip to each line, including lines within multiline strings. Except for Shell windows, remove extra newlines at the end of the file.

### Menu Run (fenêtre d'édition uniquement)

Run Module

  Applique Check Module (ci-dessus). S'il n'y a pas d'erreur, redémarre la console pour nettoyer l'environnement, puis exécute le module. Les sorties sont affichées dans la fenêtre de console. Notez qu'une sortie requiert l'utilisation de `print` ou `write`. Quand l'exécution est terminée, la console reste active et affiche une invite de commande. À ce moment, vous pouvez explorer interactivement le résultat de l'exécution. Ceci est similaire à l'exécution d'un fichier avec `python -i fichier` sur un terminal.

Run... Customized

  Similaire à Run Module, mais lance le module avec des paramètres personnalisés. Les Command Line Arguments se rajoutent à `sys.argv` comme s'ils étaient passés par la ligne de commande. Le module peut être lancé dans le terminal sans avoir à le redémarrer.

Check Module

  Vérifie la syntaxe du module actuellement ouvert dans la fenêtre d'édition. Si le module n'a pas été enregistré, IDLE va soit demander à enregistrer à l'utilisateur, soit enregistrer automatiquement, selon l'option sélectionnée dans l'onglet General de la fenêtre de configuration d'IDLE. S'il y a une erreur de syntaxe, l'emplacement approximatif est indiqué dans la fenêtre d'édition.

Console Python

  Ouvre ou active la fenêtre de console Python.

### Menu Shell (fenêtre de console uniquement)

View Last Restart

  Fait défiler la fenêtre de console jusqu'au dernier redémarrage de la console.

Restart Shell

  Redémarre la console pour nettoyer l'environnement.

Previous History

  Parcours les commandes précédentes dans l'historique qui correspondent à l'entrée actuelle.

Next History

  Parcours les commandes suivantes dans l'historique qui correspondent à l'entrée actuelle.

Interrupt Execution

  Arrête un programme en cours d'exécution.

### Menu Debug (fenêtre de console uniquement)

Go to File/Line

  Cherche, sur la ligne active et la ligne en-dessous, un nom de fichier et un numéro de ligne. Le cas échéant, ouvre le fichier s'il n'est pas encore ouvert et montre la ligne. Utilisez ceci pour visualiser les lignes de code source référencées dans un traceback d'exception et les lignes trouvées par Find in Files. Également disponible dans le menu contextuel des fenêtres de console et d'affichage.

Debugger ([dés]activer)

  Quand cette fonctionnalité est activée, le code saisi dans la console ou exécuté depuis un Éditeur s'exécutera avec le débogueur. Dans l'Éditeur, des points d'arrêt peuvent être placés avec le menu contextuel. Cette fonctionnalité est encore incomplète et plus ou moins expérimentale.

Stack Viewer

  Montre l'état de la pile au moment de la dernière erreur dans une arborescence, avec accès aux variables locales et globales.

Auto-open Stack Viewer

  Active ou désactive l'ouverture automatique de l'afficheur de pile après une erreur non gérée.

### Menu Options (console et éditeur)

Configure IDLE

  Open a configuration dialog and change preferences for the following: fonts, indentation, keybindings, text color themes, startup windows and size, additional help sources, and extensions. On macOS, open the configuration dialog by selecting Preferences in the application menu. For more details, see Setting preferences under Help and preferences.

Most configuration options apply to all windows or all future windows. The option items below only apply to the active window.

Show/Hide Code Context (fenêtres d'édition uniquement)

  Fais passer la fenêtre de taille normale à maximale. La taille de départ par défaut est de 40 lignes par 80 caractères, sauf changement dans l'onglet General de la fenêtre de configuration d'IDLE. Consultez Code Context dans la section « Édition et navigation » ci-dessous.

Show/Hide Line Numbers (Editor Window only)

  Open a column to the left of the edit window which shows the number of each line of text. The default is off, which may be changed in the preferences (see Setting preferences).

Zoom/Restore Height

  Toggles the window between normal size and maximum height. The initial size defaults to 40 lines by 80 chars unless changed on the General tab of the Configure IDLE dialog. The maximum height for a screen is determined by momentarily maximizing a window the first time one is zoomed on the screen. Changing screen settings may invalidate the saved height. This toggle has no effect when a window is maximized.

### Menu Windows (console et éditeur)

Liste les noms de toutes les fenêtres ouvertes ; sélectionnez-en une pour l'amener au premier plan (en l'ouvrant si nécessaire).

### Menu Help (console et éditeur)

About IDLE

  Affiche la version, les copyrights, la licence, les crédits, entre autres.

IDLE Help

  Affiche ce document IDLE, qui détaille les options des menus, les bases de l'édition et de la navigation ainsi que d'autres astuces.

Python Docs

  Accède à la documentation Python locale, si installée, ou ouvre docs.python.org dans un navigateur pour afficher la documentation Python la plus récente.

Turtle Demo

  Exécute le module turtledemo avec des exemples de code Python et de dessins turtle.

Des sources d'aide supplémentaires peuvent être ajoutées ici avec la fenêtre de configuration d'IDLE dans l'onglet General. Référez-vous à la sous-section Sources d'aide ci-dessous pour plus de détails sur les choix du menu d'aide.

### Menus Contextuels

Vous pouvez ouvrir un menu contextuel par un clic droit dans une fenêtre (Contrôle-clic sous macOS). Les menus contextuels ont les fonctions de presse-papier standard, également disponibles dans le menu Edit.

Cut

  Copie la sélection dans le presse-papier global ; puis supprime la sélection.

Copy

  Copie la sélection dans le presse-papier global.

Paste

  Insère le contenu du presse-papier global dans la fenêtre active.

Editor windows also have breakpoint functions. Lines with a breakpoint set are specially marked. Breakpoints only have an effect when running under the debugger. Breakpoints for a file are saved in the user's `.idlerc` directory.

Set Breakpoint

  Place un point d'arrêt sur la ligne active.

Clear Breakpoint

  Enlève le point d'arrêt sur cette ligne.

Les fenêtres de console et d'affichage disposent en plus des éléments suivants.

Go to file/line

  Même effet que dans le menu Debug.

Les fenêtres de console ont également une fonction de réduction des sorties détaillée dans la sous-section fenêtre de console de Python ci-dessous.

Squeeze

  Si le curseur est sur une ligne d'affichage, compacte toute la sortie entre le code au-dessus et l'invite en-dessous en un bouton "Squeezed text".

## Édition et navigation

### Fenêtre d'édition

IDLE peut ouvrir une fenêtre d'édition quand il démarre, selon les paramètres et la manière dont vous démarrez IDLE. Ensuite, utilisez le menu File. Il ne peut y avoir qu'une fenêtre d'édition pour un fichier donné.

La barre de titre contient le nom du fichier, le chemin absolu et la version de Python et d'IDLE s'exécutant dans la fenêtre. La barre de statut contient le numéro de ligne ("Ln") et le numéro de la colonne ("Col"). Les numéros de ligne commencent à 1 ; les numéros de colonne commencent à 0.

IDLE suppose que les fichiers avec une extension en .py* reconnue contiennent du code Python, mais pas les autres fichiers. Exécutez du code Python avec le menu Run.

### Raccourcis clavier

Dans cette section, "C" renvoie à la touche `Contrôle`sous Windows et *Unix* et à la touche :kbd:`Commande` sous macOS.

- `Retour arrière` supprime à gauche ; `Suppr` supprime à droite

- `C-Retour arrière` supprime le mot à gauche ; `C-Suppr` supprime le mot à droite

- Utilisez les touches flèche et `Page Haut` / `Page Bas` pour vous déplacer

- `C-Flèche Gauche` et `C-Flèche Droite` déplacent de mot en mot

- `Début`/`Fin` vont au début / à la fin de la ligne

- `C-Début` / `C-Fin` vont au début / à la fin du fichier

- Quelques raccourcis Emacs utiles sont hérités de Tcl/Tk :

  > - `C-a` début de ligne

  > - `C-e` fin de ligne

  > - `C-k` supprime la ligne (mais ne la met pas dans le presse-papier)

  > - `C-l` centre la fenêtre autour du point d’insertion

  > - `C-b` recule d'un caractère sans le supprimer (habituellement vous pouvez également utiliser les touches flèches pour faire cela)

  > - `C-f` avance d'un caractère sans le supprimer (habituellement vous pouvez également utiliser les touches flèches pour faire cela)

  > - `C-p` remonte d'une ligne (habituellement vous pouvez également utiliser les touches flèches pour faire cela)

  > - `C-d` supprime le caractère suivant

Les raccourcis clavier standards (comme `C-c` pour copier et `C-v` pour coller) peuvent fonctionner. Les raccourcis clavier sont sélectionnés dans la fenêtre de configuration d'IDLE.

### Indentation automatique

Après une structure d'ouverture de bloc, la prochaine ligne est indentée de 4 espaces (dans la console Python d'une tabulation). Après certains mots-clefs (break, return etc) la ligne suivante est dédentée. Dans une indentation au début de la ligne, `Retour arrière` supprime jusqu'à 4 espaces s'il y en a. `Tab` insère des espaces (dans la console, une tabulation), en nombre dépendant de la configuration. Les tabulations sont actuellement restreintes à quatre espaces à cause de limitations de Tcl/Tk.

Cf. les commandes indent/dedent region dans le menu *Format*.

### Complétions

Les complétions sont fournies pour les fonctions, classes et attributs de classes incluses par défaut et celles définies par l'utilisateur. Les complétions sont aussi fournies pour les noms de fichiers.

La fenêtre d'auto-complétion (ACW, AutoCompleteWindow) s'ouvre après un délai prédéfini (deux secondes par défaut) après qu'un "."** ou (dans une chaîne) un os.sep est saisi. Si, après un de ces caractères (éventuellement suivi d'autres caractères), une tabulation est saisie, l'ACW s'ouvre immédiatement si une complétion compatible est trouvée.

S'il n'y a qu'une seule complétion possible pour le caractère saisi, un `Tab` fournit cette complétion sans ouvrir l'ACW.

"Show Completions" force l'ouverture d'une fenêtre de complétion, par défaut `C-espace` ouvre une fenêtre de complétion. Dans une chaîne vide, cette fenêtre contient les fichiers du dossier actif. Sur une ligne vide, elle contient les fonctions et classes intégrées par défaut et définies par l'utilisateur de l'espace de nommage actif, plus tous les modules importés. Si des caractères ont été saisis, l'ACW essaie d'être plus spécifique.

Si une chaîne de caractère est saisie, la sélection de l'ACW va à l'entrée la plus proche de ces caractères. Saisir un `Tab` saisit la plus longue correspondance non ambiguë dans la console ou l'éditeur. Deux `Tab` à la suite fournissent la sélection de l'ACW, de la même manière que la touche "Entrée" ou un double-clic. Les touches flèches, Page Haut/Bas, la sélection à la souris et la molette de la souris fonctionnent tous sur l'ACW.

Les attributs "cachés" peuvent être atteints en saisissant le début d'un nom caché après un ".", e.g."**_". Ceci permet l'accès aux modules utilisant `__all__` ou aux attributs privés des classes.

Les complétions et la fonctionnalité "*Expand Word"* peuvent vous faire économiser beaucoup de temps !

Les complétions sont actuellement limitées à ce qui est présent dans les espaces de nommage. Les noms dans une fenêtre d'édition qui ne viennent pas de `__main__` et `sys.modules` ne sont pas trouvés. Exécutez votre module avec vos importations pour corriger cette situation. Notez qu'IDLE lui-même place quelques modules dans sys.modules, qui peuvent être donc accédés par défaut, comme le module re.

Si vous n'aimez pas que l'ACW s'affiche spontanément, vous pouvez simplement augmenter le délai ou désactiver l'extension.

### Info-bulles

Une info-bulle est affichée quand vous saisissez `(` après le nom d'une fonction accessible. Une expression de nom peut inclure des points et des tirets bas.L'info-bulle reste affichée jusqu'à ce que vous cliquiez dessus, que le curseur se déplace hors de la zone des arguments, ou que `)` soit saisi. Quand le curseur est dans la partie "arguments" de la définition, le menu ou raccourci affiche une info-bulle.

Une info-bulle contient la signature de la fonction et la première ligne de la docstring. Pour les fonctions incluses par défaut sans signature accessible, l'info-bulle contient toutes les lignes jusqu'à la cinquième ligne ou la première ligne vide. Ces détails sont sujets à changement.

L'ensemble des fonctions accessibles dépend des modules qui ont été importés dans le processus utilisateur, y compris ceux importés par IDLE lui-même et quelles définitions ont été exécutées, le tout depuis le dernier redémarrage.

Par exemple, redémarrez la console et saisissez `itertools.count(`. Une info-bulle s'affiche parce que IDLE importe itertools dans le processus utilisateur pour son propre usage (ceci pourrait changer). Saisissez `turtle.write(` et rien ne s'affiche. IDLE n'importe pas turtle. Le menu ou le raccourci ne font rien non plus. Saisir `import *turtle` puis `turtle.write(` fonctionnera.

Dans l'éditeur, les commandes d'importation n'ont pas d'effet jusqu'à ce que le fichier soit exécuté. Vous pouvez exécuter un fichier après avoir écrit les commandes d'importation au début, ou immédiatement exécuter un fichier existant avant de l'éditer.

### Contexte du code

Dans une fenêtre d'édition contenant du code Python, le contexte du code peut être activé pour afficher ou cacher une zone en haut de la fenêtre. Quand elle est affichée, cette zone gèle les lignes ouvrant le bloc de code, comme celles qui commencent par les mots-clés `class`, `def` ou `if`, qui auraient autrement été cachées plus haut dans le fichier. La taille de cette zone varie automatiquement selon ce qui est nécessaire pour afficher tous les niveaux de contexte, jusqu'à un nombre maximal de lignes défini dans la fenêtre de configuration d'IDLE (valeur qui vaut 15 par défaut). S'il n'y a pas de lignes de contexte et que cette fonctionnalité est activée, une unique ligne vide est affichée. Un clic sur une ligne dans la zone de contexte déplace cette ligne en haut de l'éditeur.

Les couleurs de texte et du fond pour la zone de contexte peuvent être configurées dans l'onglet Highlights de la fenêtre de configuration d'IDLE.

### Fenêtre de console Python

Avec la console d'IDLE, vous pouvez saisir, éditer et rappeler des commandes entières. La plupart des consoles et des terminaux ne travaillent qu'avec une seule ligne physique à la fois.

Quand du texte est collé dans la console, il n'est ni compilé, ni exécuté jusqu'à la ce qu'on saisisse `Entrée`. On peut éditer le code collé d'abord. Si plus d'une commande est collée dans la console, une `SyntaxError` est levée si plusieurs commandes sont compilées comme une seule.

Les fonctionnalités d'édition décrites dans les sous-sections suivantes fonctionnent du code est saisi de façon interactive. La fenêtre de console d'IDLE réagit également aux touches suivantes.

- `C-c` interrompt l'exécution de la commande

- `C-d` envoie fin-de-fichier (EOF) ; cela ferme la fenêtre s'il est saisi à une invite `>>>`

- `Alt-/` (Compléter le mot) est également utile pour réduire la quantité de texte saisie

  Historique des commandes

  - `Alt-p` récupère la précédente commande qui correspond à ce que vous avez saisi. Sous macOS, utilisez `C-p`.

  - `Alt-n` récupère la suivante. Sous macOS, utilisez `C-n`.

  - `Entrée` sur une des commandes précédentes récupère cette commande

### Coloration du texte

IDLE affiche par défaut le texte en noir sur blanc mais colore le texte qui possède une signification spéciale. Pour la console, ceci concerne les sorties de la console et de l'utilisateur ainsi que les erreurs de l'utilisateur. Pour le code Python, dans l'invite de commande de la console ou sur un éditeur, ce sont les mots-clefs, noms de fonctions et de classes incluses par défaut, les noms suivant `class` et `def`, les chaînes de caractères et les commentaires. Pour n'importe quelle fenêtre de texte, ce sont le curseur (si présent), le texte trouvé (s'il y en a) et le texte sélectionné.

La coloration du texte est faite en arrière-plan, donc du texte non coloré est parfois visible. Pour changer les couleurs, utilisez l'onglet Highlighting de la fenêtre de configuration d'IDLE. Le marquage des points d'arrêt du débogueur dans l'éditeur et du texte dans les dialogues n'est pas configurable.

## Démarrage et exécution du code

Quand il est démarré avec l'option `-s`, IDLE exécutera le fichier référencé par la variable d'environnement `IDLE*STARTUP` ou `PYTHONSTARTUP`. IDLE cherche d'abord `IDLESTARTUP` ; si `IDLESTARTUP` est présent, le fichier référencé est exécuté. Si `IDLESTARTUP` n'est pas présent, alors IDLE cherche `PYTHONSTARTUP`. Les fichiers référencés par ces variables d'environnement sont de bons endroits pour stocker des fonctions qui sont utilisées fréquemment depuis la console d'IDLE ou pour exécuter des commandes d'importation des modules communs.

De plus, `Tk` charge lui aussi un fichier de démarrage s'il est présent. Notez que le fichier de Tk est chargé sans condition. Ce fichier additionnel est `.Idle.py` et est recherché dans le dossier personnel de l'utilisateur. Les commandes dans ce fichier sont exécutées dans l'espace de nommage de Tk, donc ce fichier n'est pas utile pour importer des fonctions à utiliser depuis la console Python d'IDLE.

### Utilisation de la ligne de commande

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

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

S'il y a des arguments :

- Si `-`, `-c` ou `-r` sont utilisés, tous les arguments sont placés dans `sys.argv[1:...]` et `sys.argv[0]` est assigné à ''`, `'-c'`, ou `'-r'`. Aucune fenêtre d'édition n'est ouverte, même si c'est le comportement par défaut fixé dans la fenêtre d'options.

- Sinon, les arguments sont des fichiers ouverts pour édition et `sys.argv` reflète les arguments passés à IDLE lui-même.

### Échec au démarrage

IDLE utilise un connecteur (socket en anglais) pour communiquer entre le processus d'interface graphique d'IDLE et le processus d'exécution de code de l'utilisateur. Une connexion doit être établie quand la console démarre ou redémarre (le redémarrage est indiqué par une ligne de division avec "RESTART"). Si le processus utilisateur échoue à établir une connexion avec le processus graphique, il affiche une fenêtre d'erreur `Tk` avec un message "connexion impossible" qui redirige l'utilisateur ici. Ensuite, il s'arrête.

Une cause d'échec courant est un fichier écrit par l'utilisateur avec le même nom qu'un module de la bibliothèque standard, comme random.py et tkinter.py. Quand un fichier de ce genre est enregistré dans le même répertoire qu'un fichier à exécuter, IDLE ne peut pas importer le fichier standard. La solution actuelle consiste à renommer le fichier de l'utilisateur.

Même si c'est plus rare qu'avant, un antivirus ou un pare-feu peuvent interrompre la connexion. Si le programme ne peut pas être paramétré pour autoriser la connexion, alors il doit être éteint pour qu'IDLE puisse fonctionner. Cette connexion interne est sûre car aucune donnée n'est visible depuis un port extérieur. Un problème similaire est une mauvaise configuration du réseau qui bloque les connexions.

Des problèmes d'installation de Python stoppent parfois IDLE : il peut y avoir un conflit de versions ou bien l'installation peut nécessiter des privilèges administrateurs. Si on corrige le conflit , ou qu'on ne peut ou ne veut pas accorder de privilège, il peut être plus facile de désinstaller complètement Python et de recommencer.

A zombie pythonw.exe process could be a problem. On Windows, use Task Manager to check for one and stop it if there is. Sometimes a restart initiated by a program crash or Keyboard Interrupt (control-C) may fail to connect. Dismissing the error box or using Restart Shell on the Shell menu may fix a temporary problem.

When IDLE first starts, it attempts to read user configuration files in `~/.idlerc/` (~ is one's home directory). If there is a problem, an error message should be displayed. Leaving aside random disk glitches, this can be prevented by never editing the files by hand. Instead, use the configuration dialog, under Options. Once there is an error in a user configuration file, the best solution may be to delete it and start over with the settings dialog.

If IDLE quits with no message, and it was not started from a console, try starting it from a console or terminal (`python -m idlelib`) and see if this results in an error message.

### Exécuter le code de l'utilisateur

Sauf dans de rares cas, le résultat de l'exécution de code Python avec IDLE est censé être le même que lors de l'exécution du même code via la méthode par défaut, directement avec Python dans une console système en mode texte ou dans une fenêtre de terminal. Cependant, les différentes interfaces et opérations affectent parfois les résultats visibles. Par exemple, `sys.modules` démarre avec plus d'entrées et `threading.activeCount()` renvoie 2 plutôt que 1.

Par défaut, IDLE exécute le code de l'utilisateur dans un processus système séparé plutôt que dans le processus d'interface utilisateur qui exécute la console et l'éditeur. Dans le processus d'exécution, il remplace `sys.stdin`, `sys.stdout` et `sys.stderr` par des objets qui récupèrent les entrées et envoient les sorties à la fenêtre de console. Les valeurs originales stockées dans `sys.__stdin__`, `sys.__stdout__` et `sys.__stderr__` ne sont pas touchées, mais peuvent être `None`.

Quand la console est au premier plan, elle contrôle le clavier et l'écran. Ceci est normalement transparent, mais les fonctions qui accèdent directement au clavier et à l'écran ne fonctionneront pas. Ceci inclut des fonctions spécifiques du système qui déterminent si une touche a été pressée et, le cas échéant, laquelle.

Les remplacements des flux standards par IDLE ne sont pas hérités par les sous-processus créés dans le processus d'exécution, directement par le code de l'utilisateur ou par des modules comme multiprocessing. Si de tels modules utilisent `input` à partir de sys.stdin ou `write` à sys.stdout ou sys.stderr, IDLE doit être démarré dans une fenêtre de ligne de commande. Le sous-processus secondaire sera ensuite attaché à cette fenêtre pour les entrées et les sorties.

The IDLE code running in the execution process adds frames to the call stack that would not be there otherwise. IDLE wraps `sys.getrecursionlimit` and `sys.setrecursionlimit` to reduce the effect of the additional stack frames.

Si `sys` est réinitialisé par le code de l'utilisateur, comme avec `importlib.reload(sys)`, les changements d'IDLE seront perdus et l'entrée du clavier et la sortie à l'écran ne fonctionneront pas correctement.

Lorsque l'utilisateur lève SystemExit directement ou en appelant `sys.exit`, IDLE revient au terminal IDLE au lieu de quitter.

### Sortie de l'utilisateur sur la console

Quand un programme affiche du texte, le résultat est déterminé par le support d'affichage correspondant. Quand IDLE exécute du code de l'utilisateur, `sys.stdout` et `sys.stderr` sont connectées à la zone d'affichage de la console d'IDLE. Certaines de ces fonctionnalités sont héritées des widgets Tk sous-jacents. D'autres sont des additions programmées. Quand cela importe, la console est conçue pour le développement plutôt que l'exécution en production.

Par exemple, la console ne supprime jamais de sortie. Un programme qui écrit à l'infini dans la console finira par remplir la mémoire, ce qui entraînera un erreur mémoire. Par ailleurs, certains systèmes de fenêtres textuelles ne conservent que les n dernières lignes de sortie. Une console Windows, par exemple, conserve une quantité de lignes configurable entre 1 et 9999, avec une valeur par défaut de 300.

A Tk Text widget, and hence IDLE's Shell, displays characters (codepoints) in the BMP (Basic Multilingual Plane) subset of Unicode. Which characters are displayed with a proper glyph and which with a replacement box depends on the operating system and installed fonts. Tab characters cause the following text to begin after the next tab stop. (They occur every 8 'characters'). Newline characters cause following text to appear on a new line. Other control characters are ignored or displayed as a space, box, or something else, depending on the operating system and font. (Moving the text cursor through such output with arrow keys may exhibit some surprising spacing behavior.)

    >>> 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.

La fonction `repr` est utilisée pour l'affichage interactif de la valeur des expressions. Elle renvoie une version modifiée de la chaîne en entrée dans laquelle les codes de contrôle, certains points de code BMP et tous les points de code non BMP sont remplacés par des caractères d'échappement. Comme montré ci-dessus, ceci permet d'identifier les caractères dans une chaîne, quelle que soit la façon dont elle est affichée.

Les sorties standard et d'erreur sont généralement séparées (sur des lignes séparées) de l'entrée de code et entre elles. Elles ont chacune une coloration différente.

Pour les traceback de SyntaxError, le "^" habituel marquant l'endroit où l'erreur a été détectée est remplacé par la coloration et le surlignage du texte avec une erreur. Quand du code exécuté depuis un fichier cause d'autres exceptions, un clic droit sur la ligne du traceback permet d'accéder à la ligne correspondante dans un éditeur IDLE. Le fichier est ouvert si nécessaire.

La console a une fonctionnalité spéciale pour réduire les lignes de sorties à une étiquette "Squeezed text". Ceci est fait automatiquement pour un sortie de plus de N lignes (N = 50 par défaut). N peut être changé dans la section PyShell de la page General de la fenêtre de configuration. Les sorties avec moins de lignes peuvent être réduites par un clic droit sur la sortie. Ceci peut être utile sur des lignes si longues qu'elles ralentissent la navigation.

Les sorties réduites sont étendues sur place en double-cliquant sur l'étiquette Elles peuvent aussi être envoyées au presse-papier ou sur un fenêtre séparée par un clic-droit sur l'étiquette.

### Développer des applications tkinter

IDLE est intentionnellement différent de Python standard dans le but de faciliter le développement des programmes tkinter. Saisissez `import *tkinter* as tk; root = tk.Tk()` avec Python standard, rien n'apparaît. Saisissez la même chose dans IDLE et une fenêtre tk apparaît. En Python standard, il faut également saisir `root.update()` pour voir la fenêtre. IDLE fait un équivalent mais en arrière-plan, environ 20 fois par seconde, soit environ toutes les 50 millisecondes. Ensuite, saisissez `b = tk.Button(root, text='button'); b.pack()`. De la même manière, aucun changement n'est visible en Python standard jusqu'à la saisie de `root.update()`.

La plupart des programmes tkinter exécutent `root.mainloop()`, qui d'habitude ne renvoie pas jusqu'à ce que l'application tk soit détruite. Si le programme est exécuté avec `python -i``ou depuis un éditeur *IDLE*, une invite de commande ``>>>` n'apparaît pas tant que `mainloop()` ne termine pas, c'est-à-dire quand il ne reste plus rien avec lequel interagir.

Avec un programme tkinter exécuté depuis un éditeur IDLE, vous pouvez immédiatement commenter l'appel à mainloop. On a alors accès à une invite de commande et on peut interagir en direct avec l'application. Il faut juste se rappeler de réactiver l'appel à mainloop lors de l'exécution en Python standard.

### Exécution sans sous-processus

Par défaut IDLE exécute le code de l'utilisateur dans un sous-processus séparé via un connecteur sur l'interface de la boucle locale. Cette connexion n'est pas visible de l'extérieur et rien n'est envoyé ou reçu d'Internet. Si un pare-feu s'en plaint quand même, vous pouvez l'ignorer.

Si la tentative de connexion par le socket échoue, IDLE vous le notifie. Ce genre d'échec est parfois temporaire, mais s'il persiste, le problème peut soit venir d'un pare-feu qui bloque la connexion ou d'une mauvaise configuration dans un système particulier. Jusqu'à ce que le problème soit résolu, vous pouvez exécuter IDLE avec l'option -n de la ligne de commande.

Si IDLE est démarré avec l'option -n de la ligne de commande, il s'exécute dans un seul processus et ne crée pas de sous-processus pour exécuter le serveur RPC d'exécution de Python. Ceci peut être utile si Python ne peut pas créer de sous-processus ou de connecteur RPC sur votre plateforme. Cependant, dans ce mode, le code de l'utilisateur n'est pas isolé de IDLE lui-même. De plus, l'environnement n'est pas réinitialisé quand Run/Run Module (F5) est sélectionné. Si votre code a été modifié, vous devez reload*() les modules affectés et ré-importer tous les éléments spécifiques (e.g. *from foo import baz) pour que les changements prennent effet. Pour toutes ces raisons, il est préférable d'exécuter IDLE avec le sous-processus par défaut si c'est possible.

Obsolète depuis la version 3.4.

## Aide et préférences

### Sources d'aide

L'entrée du menu d'aide "IDLE Help" affiche une version html formatée du chapitre sur IDLE de la Library Reference. Le résultat, dans une fenêtre de texte tkinter en lecture-seule, est proche de ce qu'on voit dans un navigateur. Naviguez dans le texte avec la molette de la souris, la barre de défilement ou avec les touches directionnelles du clavier enfoncées. Ou cliquez sur le bouton TOC (Table of Contents : sommaire) et sélectionnez un titre de section dans l'espace ouvert.

Help menu entry "Python Docs" opens the extensive sources of help, including tutorials, available at `docs.python.org/x.y`, where 'x.y' is the currently running Python version. If your system has an off-line copy of the docs (this may be an installation option), that will be opened instead.

Selected URLs can be added or removed from the help menu at any time using the General tab of the Configure IDLE dialog.

### Modifier les préférences

The font preferences, highlighting, keys, and general preferences can be changed via Configure IDLE on the Option menu. Non-default user settings are saved in a `.idlerc` directory in the user's home directory. Problems caused by bad user configuration files are solved by editing or deleting one or more of the files in `.idlerc`.

Dans l'onglet Fonts, regardez les échantillons de texte pour voir l'effet de la police et de la taille sur de multiples caractères de multiples langues. Éditez les échantillons pour ajouter d'autres caractères qui vous intéressent. Utilisez les échantillons pour sélectionner les polices à largeur constante. Si certains caractères posent des difficultés dans la console ou l'éditeur, ajoutez-les en haut des échantillons et essayez de changer d'abord la taille, puis la fonte.

Dans les onglets Highlights et Keys, sélectionnez un ensemble de couleurs et de raccourcis pré-inclus ou personnalisé. Pour utiliser un ensemble de couleurs et de raccourcis récent avec une version d'IDLE plus ancienne, enregistrez-le en tant que nouveau thème ou ensemble de raccourcis personnalisé ; il sera alors accessible aux IDLE plus anciens.

### IDLE sous macOS

Dans System Preferences: Dock, on peut mettre "Prefer tabs when opening documents" à la valeur "Always". Ce paramètre n'est pas compatible avec le cadriciel tk/tkinter utilisé par IDLE et il casse quelques fonctionnalités d'IDLE.

### Extensions

IDLE inclut un outil d'extensions. Les préférences pour les extensions peuvent être changées avec l'onglet Extensions de la fenêtre de préférences. Lisez le début de config-extensions.def dans le dossier idlelib pour plus d'informations. La seule extension actuellement utilisée par défaut est zzdummy, un exemple également utilisé pour les tests.