'vertical' TextInput: id: my_textinput font_size: 150 size_hint_y: None height: 200 text: 'default' FloatLayout: Scatter: Label: text: my_textinput.text font_size: 150
Le langage Python et kivy permet à tout développeur d'écrire beaucoup plus facilement du code lisible pour n'importe quelle application, et cela devient également moins complexe dans la définition des propriétés et des liaisons pour divers widgets.
Essayons de mélanger le langage python et kivy dans l'exemple suivant.
from kivy.app import App from kivy.uix.scatter import Scatter from kivy.uix.label import Label from kivy.uix.floatlayout import FloatLayout from kivy.uix.textinput import TextInput from kivy.uix.boxlayout import BoxLayout import random class Text(BoxLayout): def change_label_colour(self, *args): colour = [random.random() for i in range(3)] + [1] label = self.ids['my_label'] label.color = colour class SimpleApp(App): def build(self): return Text() if __name__ == "__main__": SimpleApp().run()
#:import color random <Text>: orientation: 'vertical' TextInput: id: my_textinput font_size: 150 size_hint_y: None height: 200 text: 'default' on_text: my_label.color = [color.random() for i in range(3)] + [1] FloatLayout: Scatter: Label: id: my_label text: my_textinput.text font_size: 150
Les propriétés sont un moyen plus simple de définir des événements et de les lier entre eux. Il existe différents types de propriétés pour décrire le type de données que vous souhaitez gérer.
Nous devons déclarer les propriétés au niveau de la classe. Voici un exemple simple pour montrer comment nous pouvons utiliser les propriétés dans une application.
from kivy.app import App from kivy.uix.widget import Widget from kivy.uix.button import Button from kivy.uix.boxlayout import BoxLayout from kivy.properties import ListProperty class RootWidget(BoxLayout): def __init__(self, **kwargs): super(RootWidget, self).__init__(**kwargs) self.add_widget(Button(text='btn 1')) cb = CustomBtn() cb.bind(pressed=self.btn_pressed) self.add_widget(cb) self.add_widget(Button(text='btn 2')) def btn_pressed(self, instance, pos): print('pos: printed from root widget: {pos}'.format(pos=pos)) class CustomBtn(Widget): pressed = ListProperty([0, 0]) def on_touch_down(self, touch): if self.collide_point(*touch.pos): self.pressed = touch.pos # we consumed the touch. return False here to propagate # the touch further to the children. return True return super(CustomBtn, self).on_touch_down(touch) def on_pressed(self, instance, pos): print('pressed at {pos}'.format(pos=pos)) class TestApp(App): def build(self): return RootWidget() if __name__ == '__main__': TestApp().run()
Notre CustomBtn n'a pas de représentation visuelle et apparaît donc en noir. Vous pouvez toucher / cliquer sur la zone noire pour voir la sortie sur votre console.
Nous pouvons ajouter des animations dans une application kivy en utilisant l'animation ou animationTransition pour animer les propriétés du widget. Dans l'exemple, le rectangle se déplace vers un emplacement aléatoire à chaque clic sur le rectangle.
from kivy.base import runTouchApp from kivy.lang import Builder from kivy.uix.widget import Widget from kivy.animation import Animation from kivy.core.window import Window from random import random Builder.load_string(''' <Root>: ARect: pos: 500, 300 <ARect>: canvas: Color: rgba: 0, 0, 1, 1 Rectangle: pos: self.pos size: self.size ''') class Root(Widget): pass class ARect(Widget): def circle_pos(self): Animation.cancel_all(self) random_x = random() * (Window.width - self.width) random_y = random() * (Window.height - self.height) anim = Animation(x=random_x, y=random_y, duration=4, t='out_elastic') anim.start(self) def on_touch_down(self, touch): if self.collide_point(*touch.pos): self.circle_pos() runTouchApp(Root())
Découvrez nos actualités, conseils et tutoriels pour rester à jour
Ce guide est conçu pour les début...
Découvre Capacitor, le dernier-né...
Distribuer une application Django à des...
FastAPI est un framework Python moderne qui per...
Inscription en cours...
Restez informé de nos dernières actualités et recevez nos meilleurs conseils !
Chargement du formulaire de devis...