U
n gestor de ventanas (window manager) es una aplicación especial que se encarga del control de la posición de una toplevel, y proporciona la forma de redimensionar las ventanas, abrirlas y cerrarlas, y colocar su borde y título. El comando wm se utiliza en Tcl para interactuar con el window manager.Si fuese necesario conocer algún detalle acerca de los widgets, el comando winfo devuelve toda una serie de informaciones acerca de las ventanas (no sólo de las toplevel)
El comando wm
El comando wm soporta una serie de operaciones que interactúan con el window manager. La sintaxis general de este comando es la siguiente:
wm
operacion win ?args?En todos los casos el argumento win, debe ser una ventana toplevel.
Las operaciones que puede realizar el comando wm, pueden agruparse en cuatro categorías:
Quizás la operación más comúnmente usada con el comando wm sea wm title. Esta operación permite colocar un título a una toplevel. El título aparece en la barra superior de la ventana y puede ser modificado durante la ejecución del programa tantas veces como se desee.
wm title . "Prueba v1.0"
Otra operación muy utilizada es wm geometry. Esta operación se emplea para ajustar la posición de una ventana en pantalla.
wm geometry 300x200+10+10
En este ejemplo, se ha definido una toplevel de 300x200 unidades, situada en la posicón (10,10) de la pantalla.
Si el tamaño de la toplevel ya había sido definido, puede indicarse sólo la posición:
wm geometry +10+10
La tabla 20-1 resume las operaciones de tamaño, posicionamiento y decoración del comando wm.
Tabla 20-1. Operaciones de tamaño, posicionamiento y decoración.
|
wm apsect win ?a b c d? |
Obliga a que el ratio del ancho y alto esté entre a/b y c/d. El ratio es ancho/alto. |
|
wm geometry win ?WxH+X+Y? |
Devuelve o define la geometría de una ventana. |
|
wm grid win ?w h dx dy? |
Devuelve o define el tamaño del grid. w y h son el tamaño base, en unidades de grid. dx y dy son el tamaño, en pixels, de una unidad de grid |
|
wm group win ?lider? |
Devuelve o define el lider del grupo. |
|
wm maxsize win ?ancho alto? |
Impone el máximo tamaño de win. |
|
wm minsize win ?ancho alto? |
Impone el mínimo tamaño de win. |
|
wm title win ?titulo? |
Devuelve o define el título de una ventana. |
Cuando se cierra una ventana, el window manager la elimina de la pantalla y la reemplaza por un icono. Se puede abrir y cerrar la ventana mediante las operaciones deiconify e iconify respectivamente. Es posible eliminar la ventana de pantalla sin iconificarla mediante la operación withdraw. La operación state devuelve el estado actual, que puede ser normal, iconified o withdraw. Si se ha utilizado la opción withdraw, la ventana puede ser restaurada mediante la operación deiconify.
También es posible colocar los atributos del icono con las operaciones iconname, iconposition, iconbitmap e iconmask.
Bajo Windows, estas últimas operaciones puede que no funcionen debido a que, a diferencia de UNIX, Windows siempre colocará los iconos en la barra de tareas, no existiendo la posibilidad de colocarlos en cualquier punto de la pantalla.
La siguiente tabla resume las operaciones para iconos del comando wm.
Tabla 20-1. Operaciones para iconos.
|
wm deiconify win |
Abre la ventana win. |
|
wm iconbitmap win ?bitmap? |
Devuelve o define el bitmap para el icono. |
|
wm iconify win |
Cierra la ventana win. |
|
wm iconmask win ?mask? |
Devuelve o define la máscara para el icono. |
|
wm iconname win ?nombre? |
Devuelve o da el nombre al icono. |
|
wm iconposition win ?x y? |
Devuelve o da la posición al icono. |
|
wm state win |
Devuelve normal, iconified o withdraw. |
|
wm withdraw win |
Elimina la ventana de la pantalla. |
La operación más habitual entre las tres existentes en este apartado es wm protocol. Esta operación permite capturar el evento de cierre de una ventana. Es útil cuando se desea capturar este evento para realizar una salida limpia de la aplicación, aunque el usuario haya utilizado el botón marcado con una x en la parte superior de la ventana.
wm protocol WM_DELETE_WINDOW Salir
Cuando se captura el evento de destrucción de la ventana, se jecutará el comando Salir.
La operación wm frame devuelve el ID de la nueva ventana padre, si es que existe una nueva ventana padre, si no devuelve el id de ella misma.
La operación wm overrideredirect hace que desaparezcan el título y el borde de la ventana.
wm group
es utilizada para agrupar un conjunto de ventanas que pueden ser abiertas y cerradas al mismo tiempo.wm transient
informa al window manager que es una ventana temporal y que no es necesario decorar con borde o barra de título. Esto es usado, por ejemplo, en menús.La siguiente tabla resume las operaciones del tipo miscelánea del comando wm.
Tabla 20-3. Operaciones de tipo miscelánea.
|
wm focusmodel win ?cual? |
Coloca el modelo de foco. Puede ser active o passive. |
|
wm frame win |
Devuelve el ID de la ventana nueva ventana psdre. Si no ha cambiado devuelve su propio ID. |
|
wm group win ?jefe? |
Asigna win al grupo encabezado por jefe. |
|
wm overrideredirect win ?bool? |
Elimina toda decoración en la ventana. |
|
wm title win ?titulo? |
Devuelve o mark la ventana como transitoria. |
El comando winfo
Al igual que en caso del comando wm, las operaciones del comando winfo pueden dividirse en varias categorías:
Al contrario que con el comando wm, el comando winfo no sólo actúa con toplevel, sino también con cualquier otro tipo de widget, que aquí llamaremos ventana.
Relaciones familiares entre widgets
Los widgets Tk se ordenan mediante una herencia y puede usarse el comando winfo para recorrer la estructura de esta herencia.
La tabla 20-4 resume las operaciones de herencia.
Tabla 20-4. Realciones familiares entre widgets con el comando winfo.
|
winfo children win |
Devuelve la lista de widgets hijos de win. |
|
winfo class win |
Devuelve clase fuente de win. |
|
winfo exists win |
Devuelve 1 si win existe. |
|
winfo ismapped win |
Devuelve 1 si win está en pantalla. |
|
winfo manager win |
Devuelve el geometry manager: pack, place, canvas, text. |
|
winfo parent win |
Devuelve el widget padre de win. |
Tamaño
Las operaciones winfo width y winfo height devuelven el ancho y el alto de una ventana. Inicialmente una ventana se crea con un ancho y un alto de 1, por lo que es necesario utilizar tkwait visibility, para esperar a que la ventana sea mapeada en pantalla, y poder utilizar winfo para conocer su ancho y su alto.
La operación winfo geometry devuelve el tamaño y la posición de la ventana en el formato estándard: WxH+X+Y. En este caso X e Y son relativos a la ventana padre, o relativos a la ventana raíz en el caso de la ventana principal.
las operaciones winfo screenwidth y winfo screenheight devuelven, en pixels, el tamañode la pantalla. winfo screenmmwidth y winfo screenmmheight devuelven la misma información en milímetros.
Es posible realizar conversiones entre pixels y distancias en la pantalla con las operaciones winfo pixels y winfo fpixels.
La tabla 20-5 resume las operaciones de tamaño del comando winfo.
Tabla 20-5. Operaciones de tamaño del comando winfo.
|
winfo fpixels win num |
Convierte num, en unidades de pantalla, a pixels. Devuelve un flotante. |
|
winfo geometry win |
Devuelve la geometría de win en pixels y relativo a la ventana padre. |
|
winfo height win |
Devuelve el alto de win en pixels. |
|
winfo pixels win num |
Convierte num en un número entero de pixels. |
|
winfo reqheight win |
Devuelve el alto de win en pixels. |
|
winfo reqwidth win |
Devuelve el ancho de win en pixels. |
|
winfo screenheight win |
Devuelve el alto de la pantalla en pixels. |
|
winfo screenmmheight win |
Devuelve el alto de la pantalla en mm. |
|
winfo screenmmwidth win |
Devuelve el ancho de la pantalla en mm. |
|
winfo screenwidth win |
Devuelve el ancho de la pantalla en pixels. |
|
winfo width win |
Devuelve el ancho de win en pixels. |
Posición
Las operaciones winfo x y winfo y devuelven la posición de una ventana relativa a su widget padre. En el caso perticular de la ventana padre, esta será su localización en la pantalla.
Las operaciones winfo rootx y winfo rooty devuelven la posición de un widget en la pantalla, siempre y cuando no sea una toplevel.
winfo containing
devuelve el path de la ventana que contiene un punto de la pantalla.La operación winfo toplevel devuelve el path de una toplevel que contiene un widget. Si la ventana es una toplevel, devuelve su propio path.
la operación winfo screen devuelve el identificador de la ventana para la pantalla.
La tabla 20-6 resume las operaciones de posición con el comando winfo.
Tabla 20-6. Operaciones de posición con el comando winfo.
|
winfo containing win x y |
Devuelve el path de la ventana en x e y. |
|
winfo rootx win |
Devuelve la posición X de win. |
|
winfo rooty win |
Devuelve la posición Y de win. |
|
winfo screen win |
Devuelve el identificador de la pantalla de win. |
|
winfo toplevel win |
Devuelve el identificador de la toplevel que contiene a win. |
|
winfo x win |
Devuelve la posición X de win en su widget padre. |
|
winfo y win |
Devuelve la posición Y de win en su widget padre,. |
IDs
Cada widget tiene un ID. La operación winfo id devuelve este identificador. La operación winfo pathname devuelve el path del widget cuyo ID se ha pasado como parámetro.
La tabla 20-7 resume estas dos operaciones.
Tabla 20-7. Operaciones de IDs con el comando winfo.
|
winfo id win |
Devuelve el ID de win. |
|
winfo pathname id |
Devuelve el path del widget cuyo ID es id, o devueleve null.. |
Mapas de colores
La operación winfo depth devuelve el número de bits usados para representar el color en cada pixel, winfo visualsavailable devuelve una lista de las clases visuales y profundidad de color disponibles.
La operación winfo visual devuelve la clase visual de una ventana, y la operación winfo screenvisual, devuelve la clase visual, por defecto, de la pantalla.
la operación winfo rgb convierte un nombre de color o valor a sus componentes rojo, verde y azul. Devuelve tres valores decimales.
La siguiente tabla resume estas operaciones:
Tabla 20-8. Operaciones de mapas de color con el comando winfo.
|
winfo cells win |
Devuelve el número de entradas de los mapas de colores en win. Usualmente serán 256 para 8 bits de profundidad de color. |
|
winfo depth win |
Devuelve el número de bits por pixel para win. |
|
winfo rgb color |
Devuelve los componentes rgb de color. |
|
winfo screencells win |
Devuelve el número de entradas de mapas de colores usadas en la clase visual por defecto de la pantalla. |
|
winfo screendepth win |
Devuelve el número de bits por pixel en la clase visual por defecto de la pantalla |
|
winfo visual win |
Devuelve las clases visuales de win. |
|
winfo visualsavailable win |
Devuelve la lista de parejas de tipo visuales y profundidad de color disponibles en las clases visuales. |