Directivas
kv tiene directivas para importar modulos, definir constantes o indicar la versión mínima de kivy que puede usar nuestro programa. Suelen ir al principio del archivo, antes que las reglas, root widget y demás.
#:<directive_name> <options>
Versión de Kivy
Así, para indicar al sistema la versión mínima con la que va a funcionar la app
#:kivy 1.9.0
Si queremos usar la última, que es la 1.10 debemos de poner #:kivy 1.0
Importar modulos y clases
Desde este fichero se pueden importar módulos como en un script de python de la forma
#:import <alias> <package>
Aquí un ejemplo de tres imports, en uno importamos el módulo os, en otro kivy.utils y por último la clase kivy.animation.Animation
#:import os os
#:import ut kivy.utils
#:import Animation kivy.animation.Animation
<Rule>:
on_prop: Animation(x=.5).start(self)
canvas:
Color:
rgba: ut.get_random_color()
Button:
text: os.getcwd()
Crear constantes
Para crear constantes usamos la directiva set de la forma
#:set <key> <expr>
Por ejemplo vamos a definir dos colores
#:set rojillo (.9, .2, .2)
#:set verdecillo (.2, .9, .2)
<Rule>:
state: 'normal'
canvas:
Color:
rgb: rojillo if self.state == 'normal' else verdecillo
Incluir ficheros
También se pueden incluir ficheros, y la utilidad de esto es simplemente para poder dividir widget complejos en diferentes archivos. La sintaxis es la siguiente
#:include [force] <file>
Vemos que el force es opcional, y si se incluye primero descarga y vuelve a cargar el fichero.
Supongamos que hemos creado un tipo distinto de botón en el ficheo mi_boton.kv
# mi_boton.kv
<MiBoton>:
canvas:
Color:
rgb: (1.0, 0.0, 0.0)
Rectangle:
pos: self.pos
size: (self.size[0]/4, self.size[1]/4)
Y luego hacemos un componente o widget en mi_componente.kv
# mi_componente.kv
<MiComponente>:
MiBoton:
Así que en el fichero kv fichero tendremos
# main.kv
#:include mi_componente.kv
#:include force mi_boton.kv
<Rule>:
state: 'normal'
MiBoton:
MiComponente: