FAQ interface graphique

Questions générales sur l'interface graphique

What GUI toolkits exist for Python?

Standard builds of Python include an object-oriented interface to the Tcl/Tk widget set, called tkinter. This is probably the easiest to install (since it comes included with most binary distributions of Python) and use. For more info about Tk, including pointers to the source, see the Tcl/Tk home page. Tcl/Tk is fully portable to the macOS, Windows, and Unix platforms.

Depending on what platform(s) you are aiming at, there are also several alternatives. A list of cross-platform and platform-specific GUI frameworks can be found on the python wiki.

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.

Une solution consiste à empaqueter les bibliothèques Tcl et Tk dans l'application et de les retrouver à l'exécution en utilisant les variables d'environnement TCL_LIBRARY et TK_LIBRARY.

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 (http://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 ?

Sur d'autres plates-formes que Windows, oui, et vous n'avez même pas besoin de fils d'exécution multiples ! Mais vous devrez restructurer un peu votre code E/S. Tk possède l'équivalent de l'appel XtAddInput() de Xt, qui vous permet d'enregistrer une fonction de callback qui sera appelée par la boucle principale Tk lorsque des E/S sont disponibles sur un descripteur de fichier. Voir Gestionnaires de fichiers.

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

Une raison récurrente est que les gestionnaires d’évènements liés à des évènements avec la méthode bind() ne sont pas pris en charge même lorsque la touche appropriée est activée.

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