# FAQ interface graphique

## Questions générales sur l'interface graphique

## Quelles boîtes à outils IUG existent pour Python ?

Les versions standards de Python incluent une interface orientée objet pour le jeu d'objets graphiques Tcl/Tk, appelée tkinter. C'est probablement la plus facile à installer (puisqu'elle est incluse avec la plupart des distributions binaires de Python) et à utiliser. Pour plus d'informations sur Tk, y compris les liens vers les sources, voir la page d'accueil Tcl/Tk. Tcl/Tk est entièrement portable sur les plates-formes macOS, Windows et Unix.

D'autres outils existent. Le choix doit dépendre notamment de la ou des plateformes que vous visez. Sur le Wiki Python se trouvent des listes de bibliothèques graphiques multiplateformes et pour une seule plate-forme.

## Questions à propos de Tkinter

### Comment puis-je geler (freezer) les applications Tkinter ?

Freeze est un outil pour créer des applications autonomes. Lors du freezage des applications Tkinter, les applications ne seront pas vraiment autonomes, car l'application aura toujours besoin des bibliothèques Tcl et Tk.

One solution is to ship the application with the Tcl and Tk libraries, and point to them at run-time using the `TCL_LIBRARY` and `TK_LIBRARY` environment variables.

Pour obtenir des applications vraiment autonomes, les scripts Tcl qui forment la bibliothèque doivent également être intégrés dans l'application. Un outil supportant cela est SAM (modules autonomes), qui fait partie de la distribution Tix (https://tix.sourceforge.net/).

Build Tix with SAM enabled, perform the appropriate call to `Tclsam_init()`, etc. inside Python's `Modules/tkappinit.c`, and link with libtclsam and libtksam (you might include the Tix libraries as well).

### Puis-je modifier des événements Tk pendant l'écoute des E/S ?

On platforms other than Windows, yes, and you don't even need threads! But you'll have to restructure your I/O code a bit. Tk has the equivalent of Xt's `XtAddInput()` call, which allows you to register a callback function which will be called from the Tk mainloop when I/O is possible on a file descriptor. See Gestionnaires de fichiers.

### Je n'arrive pas à faire fonctionner les raccourcis clavier dans Tkinter : pourquoi ?

An often-heard complaint is that event handlers bound to events with the `bind()` method don't get handled even when the appropriate key is pressed.

La cause la plus fréquente est que l'objet graphique auquel s'applique la liaison n'a pas de « focus clavier ». Consultez la documentation Tk pour la commande focus. Habituellement, un objet graphique reçoit le focus du clavier en cliquant dessus (mais pas pour les étiquettes ; voir l'option takefocus).