====== Kivy: l'exemple Apprendre Kivy ====== **{{tagpage>kivy|Toutes les pages Kivy}}** **[[http://translate.google.com/translate?hl=&sl=auto&tl=en&u=https%3A%2F%2Fressources.labomedia.org%2Fapprendre_kivy|English Version]]** **[[les_pages_kivy_en_details|Les pages Kivy en détails]]** **Avec python 3 exclusivement !** **[[kivy_un_exemple_pour_les_pros_yelen|Un autre exemple: Yelen]]** ===== Gallerie ===== {{media_02:apprendre-kivy_1.png?200|}} Le fond blanc est carré {{media_02:apprender-kivy_2.png?200|}} {{media_02:apprendre-kivy_3.png?200|}} {{media_02:apprendre-kivy_4.png?200|}} {{media_02:apprendre-kivy_5.png?200|}} {{media_02:apprendre-kivy_6.png?200|}} Seule les valeurs de l'image sans fond blanc sont envoyées ===Modification des Options=== {{media_02:apprendre-kivy_7.png?200|}} L'écran Options {{media_02:apprendre-kivy_8.png?200|}} Modification d'une valeur {{media_02:apprendre-kivy_9.png?200|}} Sélection des options Kivy ou Apprendre Kivy {{media_02:apprendre-kivy_10.png?200|}} Les options kivy par défaut =====L'exemple Apprendre Kivy comprend en particulier===== * **Un Screen Manager** et 3 écrans * **Un fichier de configuration** avec chargement, modifications * **Du réseau avec Twisted TCP et Multicast** **[[https://kivy.org/doc/stable/guide/other-frameworks.html|Using Twisted inside Kivy]]** * **Les scripts sont longs parce qu'il incluent de bonnes explications** * **Scatter pour gérer le multitouch avec le tactile** * Il faut d'abord être à l'aise avec le **[[https://kivy.org/doc/stable/tutorials/pong.html|Pong de la doc]]** et avec **[[https://kivy.org/doc/stable/tutorials/firstwidget.html|A Simple Paint App]]** pour pouvoir aborder cet exemple. =====Comment chercher ?===== * Dans la **[[https://kivy.org/doc/stable/|doc officielle]]**, mais les chances de trouver sont quasi nulles. * Dans un moteur de recherche: ça finit souvent par des posts sur stackoverflow, avec des réponses médiocres fausses, uniquement motivées par le gain de points ! ====Une bonne solution: Les exemples des sources de kivy==== * Télécharger les sources sur [[https://github.com/kivy/kivy|github]] * Dans votre EDI créer un projet avec uniquement les [[https://github.com/kivy/kivy/tree/master/examples|exemples]] * Rechercher dans les fichiers: si vous chercher "source:", vous aurez la liste de tous les fichiers qui utilisent "source:". Si c'est un kv, trouver le .py corespondant pour l'exécuter. ===== Les sources de apprendre-kivy sur GitHub ===== * **[[https://github.com/sergeLabo/apprendre-kivy|apprendre-kivy]]** avec le [[https://github.com/sergeLabo/apprendre-kivy/raw/master/apprendre_kivy/apprendrekivy-0.25.apk|apk]] Comprend aussi: * Un serveur pour recevoir les envois du téléphone: [[https://github.com/sergeLabo/apprendre-kivy/blob/master/apprendre_kivy/serverkivy.py|serverkivy.py]] réalisé avec kivy mais prévu pour tourner seulement sur PC. * Des [[https://github.com/sergeLabo/apprendre-kivy/tree/master/apprendre_kivy/doc|extraits]] des exemples de la doc officielle ===Limitation=== En fait, les réseaux Multicast et TCP tournent en permanence, la modification de cast dans les options bascule de l'un à l'autre. Pour arrêter le reactor de twisted: reactor.stop() et pour le relancer (non testé): install_twisted_reactor() ===Bugs=== Il y en a toujours, en particulier l'affichage en fonction de la taille de l'écran. ===Le truc tout c..=== * Mettre une image avec canal alpha sur un fond blanc dans un BoxLayout !! [[kivy_image_avec_alpha_sur_fond_blanc|Une image avec canal alpha sur un fond blanc dans un BoxLayout]] =====Ressources===== ====Installation de kivy==== * **[[kivy_introduction|Kivy: Introduction]]** ====Remarques en désordre==== * **Pourquoi le *.kv ne fait pas ce que je lui dis de faire ?** Les objets héritent du précédent, qui héritent du précédent ... size_hint: None, None coupe les héritages du size, mais si une valeur n'est pas définie, la valeur par défaut est appliquée: ex size = 100, 100 La commande magique, très surfaite ! Canvas: Clear * **Utiliser uniquement des BoxLayout** et des Box plus complexes en dernier recours. * **Il est enfin possible de mettre des accents dans le kv !** ====Tout sur les fichiers kv==== * **[[kivy_les_fichiers_kv|Tout sur les fichiers kv]]** ====Tout sur les canvas==== * **[[kivy_canvas|Les canvas dans Kivy]]** ====self.app==== * **[[kivy_les_fichiers_kv#app|Les fichiers kv: app]]** app est l'arguement qui permet d'accéder à une class depuis une autre class ApprendreKivyApp(App): ... def on_start(self): reactor.listenTCP(tcp_port, TCPServerFactory(self)) # ce self est l'instance de cette classe # ce self est le premier argument de TCPServerFactory() donc app # équivaut à # TCPServerFactory(app=self) appelle class TCPServerFactory(Factory): def __init__(self, app): self.app = app ====Permissions Internet==== * **[[kivy_comment_faire_un_tas_de_chose#reception_sur_android_en_multicast|Réception sur Android en Multicast]]** ====Compilation avec buildozer==== **[[kivy_buildozer|Buildozer pour créer une application Android avec un script python]]** exemple avec un Hello World. * Ne pas mettre les modules de la bibliothèque standard python en requirements * [[https://github.com/sergeLabo/apprendre-kivy/blob/master/apprendre_kivy/buildozer.spec|buildozer.spec]] ====Deboggage sur Android==== * **[[kivy_buildozer#deboggage_sur_android|Deboggage sur Android]]** ====plyer pour accéder aux datas Android==== * **[[kivy_plyer|plyer]]** ====L'écran Options==== Dans [[https://github.com/sergeLabo/apprendre-kivy/blob/master/apprendre_kivy/main.py|main.py]] et dans la class ApprendreKivyApp(App), voir les méthodes: * build_config(self, config) * build_settings(self, settings) * on_config_change(self, config, section, key, value) {{tag> kivy python sb }}