Palabras reservadas
En los ficheros kv tenemos una serie de palabras reservadas que nos sirven referenciar distintos componentes o entidades:
- app
- root
- self
- id / ids
- args
app
Esta palabra se usa para referenciar a la app que está funcionando. Por ejemplo si quisieramos ver el nombre de la app
Label:
text: app.name
Que sería equivalente a hacer en Python
Label(text=kivy.app.App.get_running_app())
root
Con esto hacemos referencia al widget root. Por ejemplo vamos a crear una propiedad especial en el widget root y la vamos a usar en un hijo
<MiWidget>:
especial: 'Texto del root'
Button:
text: root.custom
self
Para poder referencias al propio widget usamos la palabra self. Aquí podemos ver un ejemplo del estado de un botón
Button:
text: self.state
id / ids
Para poder referenciar un widget desde otro o desde Python, dentro del kv usamos la propiedad id. En este ejemplo vamos a usar dos botones, poniendo en el botón 2 el estado del botón 1 desde kv
<MiWidget>:
Button:
id: boton1
Button:
id: boton2
text: 'El estado del botón 1 es %s' % boton1.state
y desde Python vamos a ponerle el estado del botón 2 al botón 1 usando ids. En este caso podemos usar ids['boton1'] para invocarlo o ids.boton1, las dos formas son igual de válidas.
mi_widget = MiWidget()
mi_widget.ids['boton1'].text = mi_widget.ids.boton2.state
args
Por último queda args, que solo está disponible en las propiedades callbacks on_<action>. Estas propiedas se usan para cuando hay un evento, por ejemplo cuando se aprieta un botón, cuando está en primer plano (focus), etc. En el ejemplo
TextInput:
on_focus: self.insert_text('Focus' if args[1] else 'No focus')