martes, 3 de mayo de 2022

Menús, Barras de Herramientas y Barras de Estado.

 Menús de Opciones.

Este tipo de objetos nos van a servir para mostrar un menú en la parte superior de la pantalla y cada uno de estos menús conduce a su vez a submenús.

Imagen de un menú de opciones.



Las Opciones de un menú pueden incluir iconos y asociarse a atajos o combinaciones de teclas. También en un momento dado pueden deshabilitarse para impedir que puedan ser seleccionadas.

Barra de Herramientas.

En las aplicaciones además de los menús también puede haber barras de herramientas que se construyen a base de botones agrupados de manera horizontal o vertical. Además suelen colocarse justo debajo de la barra de menú de la aplicación.


Imagen de barra de Herramientas.


Barra de estado.

Se utilizan para mostrar información que resulte útil a los usuarios. Normalmente ocupan la última línea de la ventana de la aplicación.


Imagen de barra de estado.


Ejemplo de implementación en una Aplicación en Tkinter.

Vamos a crear un ejemplo de como puede ser una aplicación sencilla usando los elementos que hemos comentado anteriormente. Este ejemplo esta sacado del Blog "Python para Impacientes" que puedes encontrar en el siguiente enlace.

La ventana principal de esta aplicación cuenta con una ventana de título

La ventana principal de esta aplicación cuenta con una barra de título, una barra de menú con tres submenús desplegables con distintos tipos de opciones, un menú contextual que se activa haciendo clic con el botón secundario del ratón en cualquier lugar de la ventana, una barra de herramientas con dos botones con imágenes y una barra de estado que es posible ocultar o mostrar mediante la opción "Ver barra de estado" del submenú "Opciones".

ejemplo de aplicación con menus, submenus etc



menú de opciones desplegado.


En el submenú "Opciones" se encuentra la opción "Guardar" que se habilitará cuando se elija alguna opción de entre las disponibles en este submenú; y se deshabilitará cuando se utilice la propia opción "Guardar", -prevista- para salvar las preferencias seleccionadas por el usuario.

iconos usados en la aplicación.


La aplicación de ejemplo utiliza imágenes de diferentes tamaños que se localizan en una carpeta llamada "imagen". Estas imágenes son utilizadas en la barra de título, los submenús, la barra de herramientas y en la ventana de diálogo "Acerca de" del submenú "Ayuda". Han sido obtenidas del sitio flaticon.com que ofrece colecciones de imágenes organizadas por distintas temáticas a programadores y a diseñadores gráficos.


menús de la aplicación desplegados.


También, en el programa se incluyen varias combinaciones de teclas asociadas a distintas opciones del menú, declaradas con el método bind().


¿Cómo funciona?

La aplicación la inicia la función main() que comprueba que todas las imágenes de la aplicación existen en la carpeta "imagen". Si todas las imágenes están disponibles se creará el objeto aplicación mediante la clase PyRemoto(). Esta clase cuenta con un método __init__() que construye la ventana de la aplicación, los menús, la barra de herramientas y una barra de estado.

La aplicación está incompleta pero enseña cómo organizar los métodos que son llamados desde las distintas opciones de los menús y barras.

Por último, el ejemplo incluye la ventana de diálogo "Acerca de", que es de tipo modal, para mostrar el modo de abrir este tipo de ventanas desde una opción del menú.

Como el código es bastante extenso puedes encontrarlo en el siguiente enlace.


Ejemplo de implementación en una Aplicación en Guizero.

La aplicación va a ser la misma solamente que usando como constructor Guizero y mezclado con algún elemento de Tkinter que directamente Guizero no tiene aun implementado. Puedes encontrar la forma detallada de construir los menús en la guia oficial de Guizero.

Una novedad que se incluye en el código es que se implementa la forma para calcular las dimensiones de la ventana del ordenador y en base a eso y al tamaño de la ventana de la aplicación, centrar la misma.

Puedes en contar el código de la aplicación en el siguiente enlace.



No hay comentarios:

Publicar un comentario