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édentes Révision précédente
Prochaine révision
Révision précédente
kivy_les_fichiers_kv [2020/01/04 10:49]
serge [Le langage kivy dans les fichiers *.kv]
kivy_les_fichiers_kv [2020/01/19 11:55] (Version actuelle)
serge [Lien entre valeurs et propriétés]
Ligne 9: Ligne 9:
   * 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 55:
 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 118:
         text: "bla bla !"         text: "bla bla !"
 </​code>​ </​code>​
-==== Explications sur les fichiers *.kv ====+===== Explications sur les fichiers *.kv =====
  
 === Règles === === Règles ===
Ligne 132: Ligne 132:
 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 182: Ligne 182:
 Lorsque vous indiquez la valeur d'une propriété,​ l'​expression est évaluée comme une expression python. Cette expression peut être statique ou dynamique, ce qui veut dire que cette valeur peut utiliser les valeurs d'​autres propriétés en utilisant des mots réservés. Lorsque vous indiquez la valeur d'une propriété,​ l'​expression est évaluée comme une expression python. Cette expression peut être statique ou dynamique, ce qui veut dire que cette valeur peut utiliser les valeurs d'​autres propriétés en utilisant des mots réservés.
  
-==== self ====+=== self ===
  
 Le mot clé self fait référence à l'​instance du widget courant ici l'​object MainScreen du main.py: Le mot clé self fait référence à l'​instance du widget courant ici l'​object MainScreen du main.py:
Ligne 191: Ligne 191:
         text: "My state is {}"​.format(self.state)         text: "My state is {}"​.format(self.state)
 </​code>​ </​code>​
-==== root ====+=== 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 (la première instance de la règle). Ce n'est pas le widget racine de tous les widgets. Ce mot clé n'est disponible que dans la définition des règles, et représente le widget racine de la règle (la première instance de la règle). Ce n'est pas le widget racine de tous les widgets.
Ligne 225: Ligne 225:
         return root         return root
 </​code>​ </​code>​
-==== app ====+=== app ===
  
 Ce mot clé se réferre toujours à l'​instance de votre application.\\ Ce mot clé se réferre toujours à l'​instance de votre application.\\
Ligne 236: Ligne 236:
 Avec TestApp(App) retourne testapp Avec TestApp(App) retourne testapp
  
-==== args ====+=== args ===
  
 Ce mot clé est disponible dans les on_action callbacks. Il fait référence aux arguments passés au callback: Ce mot clé est disponible dans les on_action callbacks. Il fait référence aux arguments passés au callback:
Ligne 274: Ligne 274:
 <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 405:
 </​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.1578131345.txt.gz
  • Dernière modification: 2020/01/04 10:49
  • par serge