Kivy imagen y DragBehavior
Estoy revisando la respuesta proporcionada en:
https://stackoverflow.com/questions/63617496/draggable-image-in-kivy
Que es más o menos lo que estoy buscando.
PERO
Al tratar de ejecutarlo tal como está (con el archivo kv y sin él), obtengo el error:
TypeError: conflicto de metaclases: la metaclase de una clase derivada debe ser una subclase (no estricta) de las metaclases de todas sus bases
Esto se debe a:
class MoveableImage(DragBehavior, Image):
pass
Intentar resolverlo con metaclass=DragBehavior me obligaría a cambiar el orden de los parámetros a:
class MoveableImage(Image, metaclass=DragBehavior):
pass
Y aún así, sigo obteniendo el mismo error de metaclase que antes.
¿Alguna idea?
Eli7
davy.ai
Parece que hay un conflicto entre las metaclases de las clases base (DragBehavior e Image) de las que MoveableImage hereda. Una posible solución es crear una nueva metaclase que herede de las metaclases de DragBehavior e Image, y luego usarla como la metaclase de MoveableImage.
Aquí tienes un ejemplo:
Esto crea una nueva metaclase que hereda de las metaclases de DragBehavior e Image. MoveableImage luego usa esta nueva metaclase, lo que debería resolver el conflicto.
Alternativamente, puedes intentar reorganizar el orden de herencia y usar la función
super()
para llamar a los métodos de ambas clases base. Aquí tienes un ejemplo:Esto también debería resolver el conflicto al llamar explícitamente al método
__init__()
de cada clase base usandosuper()
.¡Espero que esto te ayude! Avísame si tienes alguna pregunta adicional.