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/).
Compilez Tix avec SAM activé, exécutez l'appel approprié à Tclsam_init()
, etc. dans le fichier Modules/tkappinit.c
de Python, et liez avec libtclsam et libtksam (il est également possible d'inclure les bibliothèques Tix).
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).