# 25. Interfaces Utilisateur Graphiques avec Tk

Tk/Tcl fait depuis longtemps partie intégrante de Python. Il fournit un jeu d’outils robustes et indépendants de la plateforme pour gérer des fenêtres. Disponible aux développeurs via le paquet `tkinter` et ses extensions, les modules `tkinter.tix` et `tkinter.ttk`.

Le paquet `tkinter` est une fine couche orientée objet au dessus de Tcl/Tk. Pour utiliser le module `tkinter`, vous n’avez pas à écrire de code Tcl, mais vous devrez consulter la documentation de Tk, et parfois la documentation de Tcl. Le module `tkinter` est un ensemble de surcouches implémentant les widgets Tk en classes Python. De plus, le module interne `_tkinter` fournit un mécanisme robuste permettant à des fils d’exécution Python et Tcl d’interagir.

Les avantages de `tkinter` sont sa rapidité, et qu’il est généralement fourni nativement avec Python. Bien que sa documentation soit mauvaise, d’autres ressources existent : des références, tutoriels, livres, … Le module `tkinter` est aussi célèbre pour son aspect vieillot, cependant il à été grandement amélioré depuis Tk 8.5. Néanmoins, il existe bien d’autres bibliothèques d’interfaces graphiques qui pourraient vous intéresser. Pour plus d’informations sur les alternatives, consultez le chapitre Autres paquets d’interface graphique utilisateur.

- 25.1. `tkinter` — Interface Python pour Tcl/Tk
  - 25.1.1. Modules Tkinter
  - 25.1.2. Guide de survie Tkinter
    - 25.1.2.1. Mode d’emploi
    - 25.1.2.2. Un simple programme Hello World
  - 25.1.3. Un (très) rapide aperçu de Tcl/Tk
  - 25.1.4. Correspondance entre Basic Tk et Tkinter
  - 25.1.5. Relations entre Tk et Tkinter
  - 25.1.6. Guide pratique
    - 25.1.6.1. Définition des options
    - 25.1.6.2. L’empaqueteur
    - 25.1.6.3. Options de l’empaqueteur
    - 25.1.6.4. Association des variables de l’objet graphique
    - 25.1.6.5. Le gestionnaire de fenêtres
    - 25.1.6.6. Types de données des options Tk
    - 25.1.6.7. Liaisons et événements
    - 25.1.6.8. Le paramètre index
    - 25.1.6.9. Images
  - 25.1.7. Gestionnaires de fichiers
- 25.2. `tkinter.ttk` — Tk themed widgets
  - 25.2.1. Using Ttk
  - 25.2.2. Ttk Widgets
  - 25.2.3. Widget
    - 25.2.3.1. Standard Options
    - 25.2.3.2. Scrollable Widget Options
    - 25.2.3.3. Label Options
    - 25.2.3.4. Compatibility Options
    - 25.2.3.5. Widget States
    - 25.2.3.6. ttk.Widget
  - 25.2.4. Combobox
    - 25.2.4.1. Options
    - 25.2.4.2. Virtual events
    - 25.2.4.3. ttk.Combobox
  - 25.2.5. Notebook
    - 25.2.5.1. Options
    - 25.2.5.2. Tab Options
    - 25.2.5.3. Tab Identifiers
    - 25.2.5.4. Virtual Events
    - 25.2.5.5. ttk.Notebook
  - 25.2.6. Progressbar
    - 25.2.6.1. Options
    - 25.2.6.2. ttk.Progressbar
  - 25.2.7. Separator
    - 25.2.7.1. Options
  - 25.2.8. Sizegrip
    - 25.2.8.1. Platform-specific notes
    - 25.2.8.2. Bugs
  - 25.2.9. Treeview
    - 25.2.9.1. Options
    - 25.2.9.2. Item Options
    - 25.2.9.3. Tag Options
    - 25.2.9.4. Column Identifiers
    - 25.2.9.5. Virtual Events
    - 25.2.9.6. ttk.Treeview
  - 25.2.10. Ttk Styling
    - 25.2.10.1. Layouts
- 25.3. `tkinter.tix` — Extension widgets for Tk
  - 25.3.1. Using Tix
  - 25.3.2. Tix Widgets
    - 25.3.2.1. Basic Widgets
    - 25.3.2.2. File Selectors
    - 25.3.2.3. Hierarchical ListBox
    - 25.3.2.4. Tabular ListBox
    - 25.3.2.5. Manager Widgets
    - 25.3.2.6. Image Types
    - 25.3.2.7. Miscellaneous Widgets
    - 25.3.2.8. Form Geometry Manager
  - 25.3.3. Tix Commands
- 25.4. `tkinter.scrolledtext` — Gadget texte avec barre de défilement
- 25.5. IDLE
  - 25.5.1. Menus
    - 25.5.1.1. Menu File (Console et Éditeur)
    - 25.5.1.2. Menu Edit (console et éditeur)
    - 25.5.1.3. Menu Format (fenêtre d’édition uniquement)
    - 25.5.1.4. Menu Run (fenêtre d’édition uniquement)
    - 25.5.1.5. Menu Shell (fenêtre de console uniquement)
    - 25.5.1.6. Menu Debug (fenêtre de console uniquement)
    - 25.5.1.7. Menu Options (console et éditeur)
    - 25.5.1.8. Menu Windows (console et éditeur)
    - 25.5.1.9. Menu Help (console et éditeur)
    - 25.5.1.10. Menus Contextuels
  - 25.5.2. Édition et navigation
    - 25.5.2.1. Editor windows
    - 25.5.2.2. Key bindings
    - 25.5.2.3. Indentation automatique
    - 25.5.2.4. Complétions
    - 25.5.2.5. Info-bulles
    - 25.5.2.6. Fenêtre de console Python
    - 25.5.2.7. Coloration du texte
  - 25.5.3. Démarrage et exécution du code
    - 25.5.3.1. Utilisation de la ligne de commande
    - 25.5.3.2. Échec au démarrage
    - 25.5.3.3. Running user code
    - 25.5.3.4. User output in Shell
    - 25.5.3.5. Développer des applications tkinter
    - 25.5.3.6. Exécution sans sous-processus
  - 25.5.4. Aide et préférences
    - 25.5.4.1. Help sources
    - 25.5.4.2. Modifier les préférences
    - 25.5.4.3. IDLE on macOS
    - 25.5.4.4. Extensions
- 25.6. Autres paquets d’interface graphique utilisateur