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