kivy_comment_faire_un_tas_de_chose
Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
kivy_comment_faire_un_tas_de_chose [2020/02/17 12:03] – [Des explications avec les exemples des sources] serge | kivy_comment_faire_un_tas_de_chose [2022/11/19 09:49] (Version actuelle) – [Sur internet] serge | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | ======Kivy: Comment faire un tas de chose ====== | + | ======Kivy: Comment |
<WRAP center round box 60% centeralign> | <WRAP center round box 60% centeralign> | ||
**{{tagpage> | **{{tagpage> | ||
Ligne 10: | Ligne 10: | ||
====Sur internet==== | ====Sur internet==== | ||
* Dans la **[[https:// | * Dans la **[[https:// | ||
- | * Dans un moteur de recherche: ça finit souvent par des posts sur stackoverflow, | + | * Dans un moteur de recherche: ça finit souvent par des posts sur stackoverflow, |
+ | * **[[https:// | ||
====Une bonne solution: Les exemples des sources de kivy==== | ====Une bonne solution: Les exemples des sources de kivy==== | ||
* Télécharger les sources sur [[https:// | * Télécharger les sources sur [[https:// | ||
Ligne 17: | Ligne 17: | ||
* Rechercher dans les fichiers: si vous chercher " | * Rechercher dans les fichiers: si vous chercher " | ||
+ | ====Gallery of Examples==== | ||
+ | **[[https:// | ||
=====Des explications avec les exemples des sources===== | =====Des explications avec les exemples des sources===== | ||
Une liste de scripts qui explique bien: | Une liste de scripts qui explique bien: | ||
Ligne 35: | Ligne 37: | ||
* **video player** : [[https:// | * **video player** : [[https:// | ||
* **ErrorPopup(Popup)** : [[https:// | * **ErrorPopup(Popup)** : [[https:// | ||
+ | * **Slider** : [[https:// | ||
+ | * **Clock** : [[https:// | ||
+ | |||
+ | |||
+ | |||
=====Adapter la résolution dpi sur son PC===== | =====Adapter la résolution dpi sur son PC===== | ||
* Sur votre PC, définir la taille de votre fenêtre | * Sur votre PC, définir la taille de votre fenêtre | ||
<code python> | <code python> | ||
- | from kivy.core.window import Window | + | from plyer import utils |
- | # Les 3 lignes ci-dessous sont à commenter pour buildozer | + | |
- | # L' | + | from oscpy.client import OSCClient |
- | k = 1.0 | + | from oscpy.server import OSCThreadServer |
- | WS = (int(1280*k), int(720*k)) | + | |
- | Window.size = WS | + | print(" |
+ | ANDROID = utils.platform._platform_android | ||
+ | print(" | ||
+ | if not ANDROID: | ||
+ | | ||
+ | # Simulation de l' | ||
+ | k = 0.8 | ||
+ | WS = (int(720*k), int(1280*k)) | ||
+ | Window.size = WS | ||
+ | os.environ[' | ||
+ | |||
+ | from jnius import autoclass | ||
</ | </ | ||
Ligne 76: | Ligne 94: | ||
...... | ...... | ||
</ | </ | ||
- | =====Comment passer d'une class à une autre===== | + | =====Comment passer |
En fait, **comment passer d'un objet à un autre !** | En fait, **comment passer d'un objet à un autre !** | ||
Ligne 83: | Ligne 101: | ||
puis dans la liste des méthodes et attributs, ayez de nez. Si app est dans la liste: | puis dans la liste des méthodes et attributs, ayez de nez. Si app est dans la liste: | ||
print(dir(self.app)) | print(dir(self.app)) | ||
- | | + | |
+ | ====Comment récupérer self.app dans tous les objets==== | ||
+ | Une solution élégante est utilisée dans **[[https:// | ||
+ | <code python> | ||
+ | class AccelerometerApp(App): | ||
+ | def build(self): | ||
+ | return Accelerometer(self) | ||
+ | |||
+ | class Accelerometer(BoxLayout): | ||
+ | def __init__(self, | ||
+ | super().__init__(**kwargs) | ||
+ | self.app = app | ||
+ | self.app.osc = OSC() | ||
+ | |||
+ | class OSC: | ||
+ | def __init__(self): | ||
+ | self.histo = [] | ||
+ | self.server = OSCThreadServer() | ||
+ | self.server.bind(b'/ | ||
+ | |||
+ | def on_histo(self, | ||
+ | self.histo = .... | ||
+ | |||
+ | class Screen2: | ||
+ | def __init__(self): | ||
+ | self.app = App.get_running_app() | ||
+ | # et appel de l' | ||
+ | self.app.osc.histo | ||
+ | Clock.schedule_once(self._once, | ||
+ | def _once(self, dt): | ||
+ | Clock.schedule_interval(self.update, | ||
+ | | ||
+ | def update(self, | ||
+ | blabla = self.app.osc.histo | ||
+ | # blabla retrouve la valeur de histo de OSC !!!! | ||
+ | </ | ||
Ligne 164: | Ligne 217: | ||
background_color: | background_color: | ||
</ | </ | ||
+ | Pour avoir des couleurs flashy, mettre des valeurs supérieures à 1: exemple\\ | ||
+ | background_color: | ||
+ | {{ : | ||
=====Texte en gras dans un label===== | =====Texte en gras dans un label===== | ||
* **[[https:// | * **[[https:// | ||
Ligne 193: | Ligne 248: | ||
android.permissions = INTERNET, | android.permissions = INTERNET, | ||
</ | </ | ||
+ | Les permissions définies dans buildozer.spec crée le bouton enable/ | ||
===== Twisted dans kivy ===== | ===== Twisted dans kivy ===== | ||
* **[[https:// | * **[[https:// | ||
* **Exemple** avec [[apprendre_kivy|Apprendre Kivy]] | * **Exemple** avec [[apprendre_kivy|Apprendre Kivy]] | ||
+ | |||
+ | =====Comment éviter ou résoudre des bugs à la compilation avec buildozer===== | ||
+ | ===Comment commenter dans buildozer.spec ?=== | ||
+ | Ne pas faire: | ||
+ | <code python> | ||
+ | requirements = python3, | ||
+ | ni | ||
+ | requirements = python3, | ||
+ | </ | ||
+ | mais | ||
+ | <code python> | ||
+ | requirements = python3, | ||
+ | #,jnius | ||
+ | </ | ||
+ | Le buildozer.spec est seulement presque du python. Ce commentaire maltapropo m'a donné des messages d' | ||
+ | |||
+ | =====Bugs===== | ||
+ | ====Novembre 2020==== | ||
+ | Voir [[https:// | ||
+ | [CRITICAL] [Cutbuffer | ||
+ | |||
+ | résolu avec | ||
+ | sudo apt install xclip | ||
+ | | ||
+ | =====Comment avoir une action maintenue si maintien d'un Button===== | ||
+ | <code python accelerometer.kv> | ||
+ | Button: | ||
+ | id: recul | ||
+ | markup: True | ||
+ | background_color: | ||
+ | font_size: " | ||
+ | text: ' | ||
+ | on_press: root.do_back_forward(-1) | ||
+ | on_release: root.do_end() | ||
+ | Button: | ||
+ | id: avance | ||
+ | markup: True | ||
+ | background_color: | ||
+ | font_size: " | ||
+ | text: ' | ||
+ | on_press: root.do_back_forward(1) | ||
+ | on_release: root.do_end() | ||
+ | </ | ||
+ | |||
+ | <code python main.py> | ||
+ | def do_back_forward(self, | ||
+ | self.bf = 1 | ||
+ | bt = Thread(target=self.back_forward_loop, | ||
+ | bt.start() | ||
+ | |||
+ | def back_forward_loop(self, | ||
+ | while self.bf: | ||
+ | sleep(0.1) | ||
+ | self.gap = self.gap + sens*10 | ||
+ | if self.gap > 0: self.gap = 0 | ||
+ | l = len(self.app.osc.histo_xyz) | ||
+ | if self.gap < -l + 500: self.gap = -l + 500 | ||
+ | print(" | ||
+ | |||
+ | def do_end(self): | ||
+ | self.bf = 0 | ||
+ | </ | ||
- | {{tag> | + | {{tag> kivy python |
kivy_comment_faire_un_tas_de_chose.1581941021.txt.gz · Dernière modification : 2020/02/17 12:03 de serge