Hola,
mi manera de ver, es que si no existe un componente para lo que necesitas, lo debes crear a través de la Composición de componentes básicos que ya existan para crear así otro mas complejo. Piensa en como se crean los Autos, las cosas mecánicas de la vida real. Usan piezas básicas (tornillos, tuercas, etc) para hacer otras piezas mas complejas. A su ves esas piezas complejas las usan para armar algo mas complejo que forma un Conjunto que luego se ensambla con otro. Esto quiere decir que se hace uso de la Composición (Composite).

Si no existe un botón podrías usar un Panel con un Sizer, agregar un Label en el centro que ocupe todo el espacio del sizer y con eventos del mouse cambiar el estado del Label (el color por ejemplo). De esta manera nombraríamos a la nueva clase BotonLabel y dicha clase se podrá usar donde tu quieras y podría funcionar como si fuera un botón prefabricado. Si quieres hacer un control de volumen lo que puedes que hacer es usar un Panel, sizer, y algún componente gráfico primitivo para que se dibuje de acuerdo a valores. Por ejemplo, si tu dices que el valor de volumen es 50, el dibujo se pinta hasta la mitad que ocupa en el sizer. Lee el ejemplo The CPU widget de este enlace: http://zetcode.com/wxpython/customwidgets/ Puedes instalar wxpython (sudo apt-get python-wxtools python-wxversion), copias el ejemplo en un editor de textos simple, le agregues la extensión .py y lo hagas ejecutable para ver los resultados.

Para el HTML es un poco de lo mismo. Tu puedes crear un botón a través de un Label, usando la herencia por ejemplo o crear una clase que haga uso de la composición. Debes saber las implicancias al usar herencia y composición. La herencia es mas estructural, toma lo que esta definido en la clase padre y puedes extender la funcionalidad en la subclase. En cambio en la composición, puedes componer múltiples objetos en uno solo. Te sugiero que aprendas a usar patrones de diseño (composite, decorador, etc), te ahorraras muchos dolores de cabeza, el código es mas elegante para entender. Ver: https://cloud.openmailbox.org/index.php/s/xP6RCrHj03JIBO9

Imaginemos que quieres hacer un control de volumen para HTML. Lo que podrías hacer es crear una Tabla con una celda del tamaño que especifiques en píxeles por ejemplo. Luego dentro de esa celda, vas dibujando filas de distintos colores, de acuerdo al porcentaje del volumen. Podrías poner que hasta el 50% de la fila se pinten lineas verdes, luego se pinten amarillas y por último rojas. Esto podrías especificarlo mediante un método de clase así le brindas al usuario para que pueda customizarlo a sus necesidades. Incluso podrías dejar que el usuario escoja de que color quiere pintar las bandas del control.

Muchos componentes gráficos complejos se hacen a través de la composición y customización de componentes simples.

Sds

Responder a