====== 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 }}