Clase “ImagePanel” para wxpython

por | 6 junio, 2015

Hola. Hoy les traigo esta clase que extiende de wx.Panel y les permite crear un panel con una imagen. Pueden setear distintos tipos de posicionamiento y tamaños. También pueden configurar para arrastrar la imagen, hacer scroll y hacer zoom con la rueda del mouse. Al redimensionar el panel la imagen se ajusta automaticamente.

Voy a explicar brevemente los distintos tipos de configuración:

DEFAULT_CONFIG: establece el tamaño óptimo y la mejor posición. Además establece  que se puede arrastrar, mover y que se repinta automáticamente al ocurrir algún cambio.

 

OPTIMAL_SIZE: cada que se redimensiona el panel se selecciona automáticamente el mejor tamaño para la imagen. Básicamente si el panel es menor que el tamaño original de la imagen esta toma el máximo tamaño que cabe en el panel. Por el contrario si el panel es mayor el tamaño de la imagen esta mantiene su tamaño original.
NORMAL_SIZE: la imagen toma su tamaño natural.
TIGHT_SIZE: la imagen toma el máximo tamaño que pueda caber en el panel.
FULL_SIZE: la imagen toma el mínimo tamaño que cubra todo el panel.
ZOOM_SIZE: se calcula y setea el tamaño a partir del valor del zoom.

 

OPTIMAL_X_POS: selecciona la mejor posición de la imagen en el eje x.
SCROLLED_X_POS: posiciona la imagen de acuerdo a la posición de la barra lateral de desplazamiento.
CENTERED_X_POS, LEFT_POS, RIGHT_POS: no hace falta explicar.

 

OPTIMAL_Y_POS: selecciona la mejor posición de la imagen en el eje y.
SCROLLED_Y_POS: posiciona la imagen de acuerdo a la posición de la barra de desplazamiento vertical.
CENTERED_Y_POS, TOP_POS, BOTTOM_POS: no hace falta explicar.

 

DRAGGABLE, NO_DRAGGABLE: establece si se puede arrastrarla imagen.

 

AUTO_REFRESH: la imagen se repinta automáticamente al ocurrir algún cambio.
MANUAL_REFRESH: la imagen solo se repinta invocando el método RefreshImage.

 

ZOOM_WHEEL, NO_ZOOM_WHEEL: permite establecer si se puede hacer zoom con la rueda del mouse.

Por supuesto que pueden combinar los distintos tipos de configuraciones. Por ejemplo si quiero que la imagen ocupe todo el panel, este centrada verticalmente y alineada a la derecha pondría algo así:

imagepanel.SetConfig(ImagePanel.FULL_SIZE | ImagePanel.CENTERED_Y_POS | ImagePanel.RIGHT_POS)

En el proyecto incluyo un ejemplo de uso. Les dejo el enlace. wxpython.ImagePanel.

 

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *