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

Contenido

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

  - Preguntas generales de la GUI

  - ¿Qué conjuntos de herramientas de GUI existen para Python?

  - Preguntas de Tkinter

    - ¿Cómo congelo las aplicaciones de Tkinter?

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

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

## Preguntas generales de la GUI

## ¿Qué conjuntos de herramientas de GUI existen para Python?

Los empaquetados estándar de Python incluyen una interfaz orientada a objetos para el conjunto de widgets de Tcl/Tk, llamada tkinter. Esta es probablemente la más fácil de instalar (ya que viene incluida con la mayoría de distribuciones binarias de Python) y usar. Para obtener más información sobre Tk, incluyendo referencias a la fuente, ver la Página de inicio Tcl/Tk. Tcl/Tk es totalmente portable a macOS, Windows y plataformas Unix.

Dependiendo de a que plataforma(s) estés apuntando, hay también múltiples alternativas. Una lista de conjuntos de herramientas multiplataforma y de plataforma específica puede ser encontrada en la wiki de Python.

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