Trucos, trueques y sorpresas

3 agosto 2018

Cualquier desarrollador recurre continuamente a buscar soluciones ya implementadas para sus problemas. No es malo usar el código creado por otros para mejorar nuestras aplicaciones, pero hacerlo no garantiza que se esté aprendiendo a programar, principal objetivo de esta asignatura ;-).

En esta sección se irán acumulando soluciones a muchos de los problemas que podemos encontrar en el desarrollo de cualquier aplicación Python, visual o de consola.

Se habilitan los comentarios para que los alumnos puedan mejorar esta sección.

Básico

Cadenas de caracteres

Las cadenas de caracteres son fundamentales en la Programación Visual. Todos los garabatos que muestra al usuario una aplicación visual son cadenas de caracteres, aunque en muchos casos representen números. Hay muchos modos de manipular cadenas de caracteres con Python, aquí sólo recordaré el que sugiere Python 3: str.format.

Medio

Ventanas redimensionables

Si una ventana está bien diseñada y no necesita ser redimensionada, antes de mostrarla se debe indicar que no se puede redimensionar con su método resizable(False, False), refiriéndose el primer parámetro al ancho y el segundo al alto de la ventana.

Cuando la ventana tiene widgets que pueden tener más contenido del que muestran se proporciona mejor experiencia al usuario si se le permite redimensionarla, lo que provoca que se redibujen todos sus componentes visuales obteniendo efectos con baja experiencia de usuario si no lo hacemos con cuidado.

  1. Para obtener el tamaño de la ventana w, donde w puede ser cualquier widget, usaremos sus métodos w.winfo_height() y w.winfo_width(). Antes de obtener esta información se debe actualizar la ventana con la orden w.update(). How do I get a windows current size using Tkinter?
  2. Para evitar que una ventana sea tan pequeña que no se muestre su contenido usaremos su método minsize(ancho, alto). Como tkinter suele calcular bien el tamaño mínimo para mostrar correctamente todos los componentes visuales de la ventana cuando se ejecuta la aplicación, resulta útil este código para evitar que el usuario la haga más pequeña que lo que tkinter ha calculado: w.update(); w.minsize(w.winfo_width(), w.winfo_height())

Avanzado

Programación Orientada a Objetos (POO)

Python es un lenguaje orientado a objetos y nos invita a usar este paradigma de programación. Si en vez de hacer aplicaciones pensando sólo en la aplicación en sí desarrollamos Clases, podremos utilizar el mismo código en diferentes aplicaciones sin tener que reescribirlo constantemente.

Registro de acciones

En muchas aplicaciones se puede ver el registro de acciones realizadas por el código, que podemos usar gracias al módulo logging. Para usarlo en una aplicación visual hemos de asociar las instancias del registro a algún componente visual.

  1. Python Logging to Tkinter Text Widget