Ceci est une ancienne révision du document !
Table des matières
Kivy: l'exemple Apprendre Kivy
Avec python 3 exclusivement !
Gallerie
Modification des Options
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 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 Pong de la doc et avec A Simple Paint App pour pouvoir aborder cet exemple.
Comment chercher ?
- Dans la 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édiocresfausses, uniquement motivées par le gain de points !
Une bonne solution: Les exemples des sources de kivy
Les sources de apprendre-kivy sur GitHub
- apprendre-kivy avec le apk
Comprend aussi:
- Un serveur pour recevoir les envois du téléphone: serverkivy.py réalisé avec kivy mais prévu pour tourner seulement sur PC.
- Des 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 impossible
- Mettre une image avec canal alpha sur un fond blanc dans un BoxLayout !! Une image avec canal alpha sur un fond blanc dans un BoxLayout
Ressources
Installation de kivy
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
Tout sur les canvas
self.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
Compilation avec 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
Deboggage sur Android
plyer pour accéder aux datas Android
L'écran Options
Dans 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)