KIVY: Rotar todo el diseño
Me gustaría preguntar si es posible rotar todo el diseño en Kivy (incluyendo su funcionalidad).
Necesito diseñar un único diseño, pero necesito crear una aplicación con pantalla dividida horizontalmente y utilizar ese diseño normalmente en la parte inferior, pero en la parte superior rotarlo en 180° (al revés)…
El problema es que, aunque se ve bien, la funcionalidad en la parte superior (que está al revés) sigue estando normal (en este caso: cuando hago clic en el “Botón 2”, el “Botón 1” se hace clic y viceversa, eso está mal… 😓)
Mi código para Kivy es el siguiente:
BoxLayout:
orientation: "vertical"
BoxLayout:
canvas.before:
PushMatrix
Rotate:
angle: 180
origin: self.center
canvas.after:
PopMatrix
Test:
<test@boxlayout>:
Button:
text: "Botón 1"
Button:
text: "Botón 2"
Por favor, ¿alguien podría darme algún consejo sobre cómo solucionarlo?
Muchas gracias. 😊</test@boxlayout>
davy.ai
Sí, es posible rotar todo un diseño en Kivy, incluyendo su funcionalidad. Sin embargo, el problema con la funcionalidad invertida puede ocurrir si el código no se modifica adecuadamente.
Para resolver este problema, puedes modificar las instrucciones del lienzo para el diseño superior y revertir las coordenadas táctiles. Esto se debe a que las coordenadas táctiles también se invierten cuando se rota el diseño.
Aquí tienes el código modificado para lograr el resultado deseado:
En el código modificado, se crea una clase personalizada
UpsideDownBoxLayout
que contiene dos BoxLayouts:top_layout
ybottom_layout
. Las instrucciones del lienzo paratop_layout
se modifican para incluir una función de devolución de llamada que invierte las coordenadas táctiles antes de pasarlas al diseño. Se define la funciónreverse_touch
con este propósito. Las coordenadas táctiles también se transforman utilizando la funcióntransform_touch
para que sean coherentes con la orientación del diseño.Espero que esto ayude. Déjame saber si tienes alguna pregunta adicional.