Outils pour utilisateurs

Outils du site


kivy_les_fichiers_kv

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
Prochaine révisionLes deux révisions suivantes
kivy_les_fichiers_kv [2020/01/04 09:49] – [Le langage kivy dans les fichiers *.kv] sergekivy_les_fichiers_kv [2020/02/17 14:48] – [Expressions Valeur et mots réservés] serge
Ligne 3: Ligne 3:
 **{{tagpage>kivy|Toutes les pages Kivy}}** **{{tagpage>kivy|Toutes les pages Kivy}}**
 **[[http://translate.google.com/translate?hl=&sl=auto&tl=en&u=https%3A%2F%2Fressources.labomedia.org%2Fkivy_les_fichiers_kv|English Version]]** **[[http://translate.google.com/translate?hl=&sl=auto&tl=en&u=https%3A%2F%2Fressources.labomedia.org%2Fkivy_les_fichiers_kv|English Version]]**
 +</WRAP>
 +<WRAP center round box 40% centeralign>
 +**[[les_pages_kivy_en_details|Les pages Kivy en détails]]**
 +</WRAP>
 +<WRAP center round box 60% centeralign>
 +{{ ::comments_in_kv.png?600 |}}\\ 
 +Avec des commentaires !
 </WRAP> </WRAP>
 ===== Le langage kivy dans les fichiers *.kv ===== ===== Le langage kivy dans les fichiers *.kv =====
Ligne 9: Ligne 16:
   * Ce qui suit est une adaptation de kivy-vision.fr qui n'est plus en ligne   * Ce qui suit est une adaptation de kivy-vision.fr qui n'est plus en ligne
  
-===== kv =====+===== Ressources sur les fichiers kv =====
  
   * [[http://kivy.org/docs/api-kivy.lang.html|Kivy Language]]   * [[http://kivy.org/docs/api-kivy.lang.html|Kivy Language]]
   * [[http://kivy.org/docs/guide/lang.html|Programming Guide Kv language]]   * [[http://kivy.org/docs/guide/lang.html|Programming Guide Kv language]]
  
-==== Nommage pour le fichier kv ====+===== Nommage pour le fichier kv =====
  
   * [[http://www.blog.pythonlibrary.org/2013/11/25/kivy-101-how-to-use-boxlayouts/|Un tuto]] repris en partie ici pour le nommage.   * [[http://www.blog.pythonlibrary.org/2013/11/25/kivy-101-how-to-use-boxlayouts/|Un tuto]] repris en partie ici pour le nommage.
  
-=== Exemple ===+==== Exemple ====
  
 **app_with_kv.py** **app_with_kv.py**
Ligne 55: Ligne 62:
 Si vous ne respectez pas la convention, vous n'aurez pas d'erreur mais seulement une fenêtre noire. Si vous ne respectez pas la convention, vous n'aurez pas d'erreur mais seulement une fenêtre noire.
  
-==== Comment adapter un main.py avec Builder.load_string() pour un fichier *.kv ====+===== Comment adapter un main.py avec Builder.load_string() pour un fichier *.kv =====
  
 Permet de comprendre comment les éléments du fichier kv sont lu! Permet de comprendre comment les éléments du fichier kv sont lu!
Ligne 118: Ligne 125:
         text: "bla bla !"         text: "bla bla !"
 </code> </code>
-==== Explications sur les fichiers *.kv ====+===== Pricipes des fichiers *.kv =====
  
 === Règles === === Règles ===
Ligne 132: Ligne 139:
 Des templates seront utilisés pour construire des morceaux de votre application, comme des listes de contenu, ou par exemple, si vous voulez concevoir l'aspect d'une ligne dans une liste(icone à gauche, texte à droite). Des templates seront utilisés pour construire des morceaux de votre application, comme des listes de contenu, ou par exemple, si vous voulez concevoir l'aspect d'une ligne dans une liste(icone à gauche, texte à droite).
  
-==== Syntaxe d'un fichier kv ====+===== Syntaxe d'un fichier kv =====
  
 Le fichier peut contenir des défitions de règles, un widget racine et des templates: Le fichier peut contenir des défitions de règles, un widget racine et des templates:
Ligne 255: Ligne 262:
 </code> </code>
 Attention, l'id ne sera pas disponible dans l'instance du widget. L'attribut id ne sera pas utilisé. Attention, l'id ne sera pas disponible dans l'instance du widget. L'attribut id ne sera pas utilisé.
 +
 +====Exemple de récupération d'une propriété d'une autre class====
 +Extrait de [[smartcitizen|Kivy: Application Android Smart Citizen]]
 +{{ ::kivy_text_explication.png?800 |}}
 +Cet exemple pourrait être un excercice dans une interro surprise! On applique bêtement le cours ! "Mais, M'sieur, j'ai pas compris, j'ai pas compris, .... !"
 +  * app: Ce mot clé se réferre toujours à l'instance de votre application, soit SmartCitizenApp
 +  * root: Ce mot clé n'est disponible que dans la définition des règles, et représente le widget racine de la règle, soit SmartCitizen
 +  * ids: [[https://kivy.org/doc/stable/api-kivy.uix.widget.html#kivy.uix.widget.Widget.ids|appel d'un widget par son id]], ici l'id est sm, soit le screen manager
 +  * get_screen('first') est le premier écran Screen1
 +  * owner_detail: est un attribut de class de Screen1, défini dans cette class par self.owner_detail
  
 ===== Lien entre valeurs et propriétés ===== ===== Lien entre valeurs et propriétés =====
  
-Lorsque vous utilisez le langage Kivy, vous aurez remarqué que nous effectuons un certains travail en tâche de fond pour faire que les choses se déroulent correctement. Vous devriez savoir que les propriétés implémentente le logiciel observateur de modèle conception: cela veut dire que vous pouvez lier vos propres fonctions qui seront appelée quand la valeur d'une propriété changera.+Lorsque vous utilisez le langage Kivy, vous aurez remarqué que nous effectuons un certains travail en tâche de fond pour faire que les choses se déroulent correctement. Vous devriez savoir que les propriétés implémentent le logiciel observateur de modèle conception: cela veut dire que vous pouvez lier vos propres fonctions qui seront appelée quand la valeur d'une propriété changera.
  
 Le langage Kivy détecte les propriétés dans votre expression value et créé des callbacks pour mettre à jour automatiquement la propriété en utilisant votre expression lorsqu'un changement intervient. Le langage Kivy détecte les propriétés dans votre expression value et créé des callbacks pour mettre à jour automatiquement la propriété en utilisant votre expression lorsqu'un changement intervient.
Ligne 274: Ligne 291:
 <code python> <code python>
 Button: Button:
-    text: 'Plop world' if self.state == 'normal' else 'Release me!'+    text: 'Plop the world' if self.state == 'normal' else 'Release me!'
 </code> </code>
 Le texte du bouton change en fonction de l'état de celui-ci. Par défaut, le texte sera 'Plop the world', mais lorque le bouton est appuyé, le texte sera alor 'Release me!'. Le texte du bouton change en fonction de l'état de celui-ci. Par défaut, le texte sera 'Plop the world', mais lorque le bouton est appuyé, le texte sera alor 'Release me!'.
Ligne 405: Ligne 422:
 </code> </code>
  
-{{tag>kivy sb}}+=====Définir l'héritage d'un widget===== 
 + 
 +<code python> 
 +from kivy.app import App 
 +from kivy.lang import Builder 
 + 
 +kv = ''' 
 +<LabeledSlider@Slider>: 
 +    step: 1 
 +    Label: 
 +        text: '{}'.format(int(root.value)) 
 +        size: self.texture_size 
 +        top: root.center_y - sp(20) 
 +        center_x: root.value_pos[0] 
 +''' 
 + 
 +class ShortenText(App): 
 +    def build(self): 
 +        return Builder.load_string(kv) 
 + 
 +ShortenText().run() 
 +</code> 
 +équivaut à  
 +<code python> 
 +from kivy.app import App 
 +from kivy.lang import Builder 
 +from kivy.uix.slider import Slider 
 + 
 +kv = ''' 
 +<LabeledSlider>: 
 +    step: 1 
 +    Label: 
 +        text: '{}'.format(int(root.value)) 
 +        size: self.texture_size 
 +        top: root.center_y - sp(20) 
 +        center_x: root.value_pos[0] 
 +''' 
 + 
 +class LabeledSlider(Slider): 
 +    pass 
 + 
 +class ShortenText(App): 
 +    def build(self): 
 +        return Builder.load_string(kv) 
 + 
 +ShortenText().run() 
 +</code> 
 +{{tag>kivy sb  python3}}
kivy_les_fichiers_kv.txt · Dernière modification : 2020/10/29 13:50 de serge