Outils pour utilisateurs

Outils du site


apprendre_kivy

Ceci est une ancienne révision du document !


Kivy: l'exemple Apprendre Kivy

Avec python 3 exclusivement !

Gallerie

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é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 github
  • Dans votre EDI créer un projet avec uniquement les 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

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

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

pyjnius pour accéder aux datas Android

TODO travailler la page pyjnius

apprendre_kivy.1577969921.txt.gz · Dernière modification : 2020/01/02 12:58 de serge