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:

results matching ""

    No results matching ""