En este artículo, desarrollaremos una ventana GUI utilizando el marco kivy de python, y agregaremos una etiqueta que tenga un comportamiento de arrastre en esta ventana.
Nota: También puede seguir el mismo patrón para implementar eventos de arrastre en otros widgets.
Acercarse:
En realidad, lo que estamos haciendo es simplemente usar el concepto de herencia, y estamos creando un nuevo widget (DraggableLabel) combinando las propiedades del widget Kivy Label y la clase DragBehaviour de Kivy. Y a partir del código, puedes comprobar que hemos definido tres propiedades
- drag_rectangle: es el área en la que queremos habilitar el arrastre, puede ver en el código que hemos usado nosotros mismos con los valores de esta propiedad porque queremos habilitar el arrastre en todo el diseño.
- drag_timeout: especifica el tiempo tras el cual se desactivará el arrastre desde la Etiqueta si no se arrastra Etiqueta, pero volverá a entrar en juego si empezamos a arrastrar.
- drag_distance: Distancia a mover antes de arrastrar el DragBehavior, en píxeles. Tan pronto como se haya recorrido la distancia, DragBehavior comenzará a arrastrarse y no se enviará ningún evento táctil a los niños.
Y después de definir las propiedades, simplemente estamos usando nuestro widget recién creado como usamos otros.
A continuación se muestra la implementación:
Python3
from kivy.app import App from kivy.uix.label import Label # importing builder from kivy from kivy.lang import Builder from kivy.uix.behaviors import DragBehavior # using this class we will combine # the drag behaviour to our label widget class DraggableLabel(DragBehavior, Label): pass # this is the main class which # will render the whole application class uiApp(App): # method which will render our application def build(self): return Builder.load_string(""" <DraggableLabel>: drag_rectangle: self.x, self.y, self.width, self.height drag_timeout: 10000 drag_distance: 0 DraggableLabel: text:"[size=40]GeeksForGeeks[/size]" markup:True """) # running the application uiApp().run()
Producción:
Publicación traducida automáticamente
Artículo escrito por yashmathur123123 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA