Outils pour utilisateurs

Outils du site


kivy_comment_faire_un_tas_de_chose

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
kivy_comment_faire_un_tas_de_chose [2018/10/25 13:44]
serge [Twisted dans kivy]
kivy_comment_faire_un_tas_de_chose [2020/02/17 16:11] (Version actuelle)
serge [Des explications avec les exemples des sources]
Ligne 1: Ligne 1:
-======Kivy: Comment faire un tas de chose======+======Kivy: Comment faire un tas de chose ======
 <WRAP center round box 60% centeralign>​ <WRAP center round box 60% centeralign>​
-**{{tagpage>​kivy|Toutes les pages Kivy}}**+**{{tagpage>​kivy|Toutes les pages Kivy}}**   
 +**[[http://​translate.google.com/​translate?​hl=&​sl=auto&​tl=en&​u=https%3A%2F%2Fressources.labomedia.org%2Fkivy_comment_faire_un_tas_de_chose|English Version]]**
 </​WRAP>​ </​WRAP>​
 +<WRAP center round box 40% centeralign>​
 +**[[les_pages_kivy_en_details|Les pages Kivy en détails]]**
 +</​WRAP>​
 +===== Comment chercher ? =====
 +====Sur internet====
 +  * 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 <​del>​médiocres</​del>​ fausses, uniquement motivées par le gain de points !
  
-===== Pourquoi ​kivy est-il traître ? =====+====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.
  
-**Kivy masque ​des erreurs python**+=====Des explications avec les exemples ​des sources===== 
 +Une liste de scripts qui explique bien:
  
-Par exemple:+  * **pos_hint** ​[[https://​github.com/​kivy/​kivy/​blob/​master/​examples/​widgets/​boxlayout_poshint.py|boxlayout_poshint.py]] 
 +  * **bubble** : [[https://​github.com/​kivy/​kivy/​blob/​master/​examples/​widgets/​bubble_test.py|bubble_test.py]] 
 +  * **camera** : [[https://​github.com/​kivy/​kivy/​blob/​master/​examples/​widgets/​camera.py|camera.py]] 
 +  * **carousel** : [[https://​github.com/​kivy/​kivy/​blob/​master/​examples/​widgets/​carousel_buttons.py|carousel_buttons.py]] 
 +  * **mipmap** : [[https://​github.com/​kivy/​kivy/​blob/​master/​examples/​widgets/​label_mipmap.py|label_mipmap.py]] 
 +  * **text_size = textwrap** : [[https://​github.com/​kivy/​kivy/​blob/​master/​examples/​widgets/​label_text_size.py|label_text_size.py]] 
 +  * **text with markup** : [[https://​github.com/​kivy/​kivy/​blob/​master/​examples/​widgets/​label_with_markup.py|label_with_markup.py]] 
 +  * **popup** : [[https://​github.com/​kivy/​kivy/​blob/​master/​examples/​widgets/​popup_with_kv.py|popup_with_kv.py]] 
 +  * **scatter** : [[https://​github.com/​kivy/​kivy/​blob/​master/​examples/​widgets/​scatter.py|scatter.py]] et [[https://​github.com/​kivy/​kivy/​blob/​master/​examples/​widgets/​scatter.kv|scatter.kv]] 
 +  * **scrollview** : [[https://​github.com/​kivy/​kivy/​blob/​master/​examples/​widgets/​scrollview.py|scrollview.py]] et [[https://​github.com/​kivy/​kivy/​blob/​master/​examples/​widgets/​scrollview.kv|scrollview.kv]] 
 +  * **splitter** : [[https://​github.com/​kivy/​kivy/​blob/​master/​examples/​widgets/​splitter.py|splitter.py]] 
 +  * **tabbed panel = onglet** : [[https://​github.com/​kivy/​kivy/​blob/​master/​examples/​widgets/​tabbedpanel.py|tabbedpanel.py]] 
 +  * **text align** : [[https://​github.com/​kivy/​kivy/​blob/​master/​examples/​widgets/​textalign.py|textalign.py]] [[https://​github.com/​kivy/​kivy/​blob/​master/​examples/​widgets/​textalign.kv|textalign.kv]] 
 +  * **video player** : [[https://​github.com/​kivy/​kivy/​blob/​master/​examples/​widgets/​videoplayer.py|videoplayer.py]] 
 +  * **ErrorPopup(Popup)** : [[https://​github.com/​kivy/​plyer/​blob/​master/​examples/​text2speech/​main.py|main.py]] et [[https://​github.com/​kivy/​plyer/​blob/​master/​examples/​text2speech/​text2speechdemo.kv|text2speechdemo.kv]] 
 +  * **Slider** : [[https://​github.com/​kivy/​kivy/​blob/​master/​examples/​canvas/​circle.py|circle.py]] 
 +  * **Clock** : [[https://​github.com/​kivy/​kivy/​blob/​master/​examples/​tutorials/​pong/​main.py|Pong]] ou [[https://​github.com/​kivy/​kivy/​blob/​master/​examples/​canvas/​mesh_manipulation.py|mesh_manipulation.py]]
  
-  * un argument qui manque dans un appel de méthode lève une erreur pour du python habituel, mais pas dans kivy. D'où un débogage rusé nécessaire ! 
  
-===== La commande magique ===== 
  
-Dans Blender, le raccourcis magique c'est: 
-**[[https://​wiki.blender.org/​index.php/​User:​Fade/​Doc:​2.6/​Manual/​3D_interaction/​Transform_Control/​Reset_Object_Transformations#​Apply_Object_transformations|Ctrl + A]]** 
- 
-Dans le *.kv, c'est: [[https://​kivy.org/​docs/​api-kivy.lang.html|Graphical Instructions]] 
  
 +=====Adapter la résolution dpi sur son PC=====
 +  * Sur votre PC, définir la taille de votre fenêtre
 <code python> <code python>
-    canvas: +from kivy.core.window import Window 
-        Clear+# Les 3 lignes ci-dessous sont à commenter pour buildozer 
 +# L'​écran de mon tél fait 1280*720 
 +k = 1.0 
 +WS = (int(1280*k),​ int(720*k)) 
 +Window.size = WS
 </​code>​ </​code>​
  
 +Lancer le main.py avec:
 +  KIVY_METRICS_FONTSCALE=1.2 python3 main.py
 +avec une valeur "​1.2"​ à adapter pour que vous ayez le même graphisme sur votre PC que sur votre téléphone.
  
-===== Pourquoi définir les attributs comme attributs de classe ? =====+ 
 +=====Comment lister tous les widgets dans le python===== 
 +  * **[[https://​kivy.org/​doc/​stable/​api-kivy.uix.widget.html#​kivy.uix.widget.Widget.walk|walking this tree]]** 
 +Par exemple, extrait de [[https://​github.com/​sergeLabo/​smartcitizen/​blob/​master/​smartcitizen/​main.py#​L83|smartcitizen main.py#​L83]]:​ 
 +  # Recherche de tous les widgets de self 
 +  print([type(widget) for widget in self.walk(loopback=True)]) 
 +  # Recherche de tous les widgets de Screen1 
 +  print(self.ids.sm) 
 +  f = self.ids.sm.get_screen("​first"​) 
 +  print([type(widget) for widget in f.walk(loopback=True)]) 
 +   
 +Sortie de [type(widget) for widget in self.walk(loopback=True)] dans SmartCitizen() 
 +<​code>​ 
 +<class '​__main__.SmartCitizen'>,​ 
 +<class '​kivy.uix.actionbar.ActionBar'>,​ 
 +<class '​kivy.uix.actionbar.ActionView'>,​ 
 +<class '​kivy.uix.actionbar.ActionButton'>,​ 
 +<class '​kivy.uix.image.Image'>,​ 
 +<class '​kivy.uix.screenmanager.ScreenManager'>,​ 
 +<class '​__main__.MainScreen'>,​ 
 +<class '​kivy.uix.boxlayout.BoxLayout'>,​ 
 +<class '​kivy.uix.label.Label'>,​ 
 +<class '​kivy.uix.boxlayout.BoxLayout'>,​ 
 +...... 
 +</​code>​ 
 +=====Comment passer d'une class à une autre===== 
 +En fait, **comment passer d'un objet à un autre !** 
 + 
 +Faire des print(de quoi ?). Commencer par 
 +  print(dir(self)) 
 +puis dans la liste des méthodes et attributs, ayez de nez. Si app est dans la liste: 
 +  print(dir(self.app)) 
 +   
 + 
 + 
 + 
 + 
 +===== Pourquoi définir les attributs ​appelés dans *.kv comme attributs de classe ? =====
  
 **Parce que c'est comme ça ? Quand lama fâché, lui toujours faire ainsi !** **Parce que c'est comme ça ? Quand lama fâché, lui toujours faire ainsi !**
  
 +Voir l'​exemple ci-dessous.
 ===== Comment changer la couleur d'un Rectangle ? ===== ===== Comment changer la couleur d'un Rectangle ? =====
  
Ligne 93: Ligne 162:
     ...     ...
 </​code>​ </​code>​
 +
 +=====Button background_color=====
 +<code python>
 +Button:
 +    background_normal:​ ''​
 +    background_color:​ 1, .3, .4, .85
 +</​code>​
 +
 +=====Texte en gras dans un label=====
 +  * **[[https://​kivy.org/​doc/​stable/​api-kivy.core.text.markup.html|Text Markup]]**
 +<code python>
 +        Label:
 +            canvas.before:​
 +                Color:
 +                    rgba: 1, 1, 1, 1
 +                Rectangle:
 +                    pos: self.pos
 +                    size: self.size
 +            size_hint_y:​ 0.10
 +            markup: True
 +            text: '​[b]'​ + "Mon texte" + '​[/​b]'​
 +            color: 1, 0, 0.5, 1
 +</​code>​
 +
 +
 ===== Factory ===== ===== Factory =====
 Factory peut être utilisée pour enregistrer automatiquement toute classe ou module et en instancier des classes n'​importe où dans votre projet. Factory peut être utilisée pour enregistrer automatiquement toute classe ou module et en instancier des classes n'​importe où dans votre projet.
  
-  * [[http://​kivy.org/​docs/​api-kivy.factory.html|API Factory]] +  ​* **[[http://​kivy.org/​docs/​api-kivy.factory.html|API Factory]]** [[https://​stackoverflow.com/​questions/​29592280/​using-factory-objects-in-kivy|using-factory-objects-in-kivy]] I'm not sure of everything the Factory is used for ... Les exemples de la doc qui l'​utilisent sont irréels .... 
 ===== Réception sur Android en Multicast ===== ===== Réception sur Android en Multicast =====
  
Ligne 107: Ligne 200:
 ===== Twisted dans kivy ===== ===== Twisted dans kivy =====
  
-Les 2 API ont un +  * **[[https://kivy.org/doc/stable/guide/other-frameworks.html|Integrating with other Frameworks]]** propose l'intégration des 2 ! 
-  tourne_pour_toujours() +  * **Exemple** avec [[apprendre_kivy|Apprendre Kivy]]
-pour les lancer. +
- +
-Les deux ne peuvent pas tourner dans un thread. +
- +
-La solution est: [[https://github.com/kivy/kivy/​tree/​master/examples/frameworks/twisted|twisted dans kivy]] mais qui ne marche qu'en python2. Twisted n'est pas intégré à Crystax en Septembre 2018.+
  
-Erreur obtenue 
-  _threadselect interface of twisted is not available on Python 3 
  
-{{tag>​kivy sb}}+{{tag>​kivy sb python3}}
kivy_comment_faire_un_tas_de_chose.1540467899.txt.gz · Dernière modification: 2018/10/25 13:44 par serge