Preguntas frecuentes sobre la Interfaz Gráfica de Usuario (*GUI*)
*****************************************************************


Preguntas generales de la GUI
=============================


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.


Preguntas de Tkinter
====================


¿Cómo congelo las aplicaciones de Tkinter?
------------------------------------------

Freeze es una herramienta para crear aplicaciones independientes. Al
congelar aplicaciones Tkinter, las aplicaciones no serán realmente
independientes, ya que la aplicación seguirá necesitando las
bibliotecas Tcl y Tk.

Una solución es enviar la aplicación con las bibliotecas Tcl y Tk, y
apuntarlas en tiempo de ejecución utilizando "TCL_LIBRARY" y las
variables de entorno "TK_LIBRARY".

Para obtener aplicaciones verdaderamente independientes, los *scripts*
Tcl que forman la biblioteca también deben integrarse en la
aplicación. Una herramienta compatible es SAM (módulos
independientes), que forma parte de la distribución Tix
(http://tix.sourceforge.net/).

Construya Tix con SAM habilitado, realice la llamada apropiada a
"Tclsam_init()", etc. dentro de Python "Modules/tkappinit.c", y enlace
con libtclsam libtclsam y libtksam (también puede incluir las
bibliotecas Tix).


¿Puedo tener eventos Tk manejados mientras espero por *I/O*?
------------------------------------------------------------

En plataformas que no sean Windows, sí, ¡y ni siquiera necesita hilos!
Pero tendrá que reestructurar un poco su código de I/O. Tk tiene el
equivalente de la llamada Xt "XtAddInput()", que le permite registrar
una función de *callback* que se llamará desde el bucle principal de
Tk cuando sea posible I/O en un descriptor de archivo. Ver Gestor de
archivos.


No puedo hacer que los atajos de teclado funcionen en Tkinter: ¿por qué?
------------------------------------------------------------------------

Una queja que se escucha con frecuencia es que los controladores de
eventos vinculados a eventos con el método "bind()" no se manejan
incluso cuando se presiona la tecla adecuada.

La causa más común es que el widget al que se aplica el atajo no tiene
enfoque de teclado. Consulte la documentación de Tk para el comando de
*focus*. Por lo general, un *widget* recibe el foco del teclado
haciendo clic en él (pero no para las etiquetas; consulte la opción
*takefocus*).
