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édentesRévision précédente
Prochaine révision
Révision précédente
Prochaine révisionLes deux révisions suivantes
kivy_comment_faire_un_tas_de_chose [2018/09/20 13:26] – [Kivy: Comment faire un tas de chose] sergekivy_comment_faire_un_tas_de_chose [2020/02/17 15:11] – [Des explications avec les exemples des sources] serge
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 verified}}+{{tag>kivy sb python3}}
kivy_comment_faire_un_tas_de_chose.txt · Dernière modification : 2022/11/19 09:49 de serge