Une histoire sur un amateur faisant une rupture de bloc avec python (kivy) ①

Préface 1 kivy jusqu'à ce que vous commenciez

Cela fait environ six mois que j'ai vraiment commencé à programmer, mais quand je pensais à créer quelque chose qui ressemblait à une application, un pigeon que j'ai rencontré sur Twitter m'a recommandé kivy, alors j'ai commencé avec l'élan. J'espère que l'explication du processus de production et du contenu permettra à d'autres personnes de se lancer plus facilement dans le développement d'applications avec kivy.

Préface 2 Qu'est-ce que kivy en premier lieu?

kivy est un Python qui vous permet de développer des applications multi-tap. Une bibliothèque open source, les applications créées avec kivy peuvent être exécutées sur des appareils iOS / Android, y compris des environnements PC tels que macOS, Windows et Linux. De plus, kivy peut également utiliser son propre langage appelé langage KV avec Python, qui est une fonctionnalité qui rend le programme multicouche. Il semble qu'il soit difficile de comprendre ce langage KV et qu'il ne supporte pas très bien le japonais.

Tout d'abord, j'ai essayé de faire un tutoriel, mais je ne comprends pas du tout ...

Eh bien, même si vous ne lisez que le plan, je ne sais pas si vous ne l'essayez pas pour le moment! Alors, installons kivy immédiatement et démarrons kivy en créant le tutoriel Pong Game. ~~~. J'ai commencé avec une sensation de détente, mais j'ai pu faire quelque chose comme ça avec du copier-coller, mais je n'ai aucune idée de ce qui se passe dans le programme. Je suis un amateur, donc je ne comprends pas vraiment ce qu'est Widget, et même si je vais à l'explication détaillée, je ne peux pas penser à tous les mots que je ne connais pas. De plus, en raison du langage KV mentionné ci-dessus, la structure du programme semble très difficile à lire. Il semble que la position et la taille de ce qui est affiché à l'écran soient décidées ...

Je ne suis pas sûr. Y a-t-il du bon matériel ... Il y a.

Donc, quand je cherchais du bon matériel, de Asakura Shoten, qui est toujours redevable, [livre de programmation kivy](https: / /www.asakura.co.jp/books/isbn/978-4-254-12896-3/) est sorti, n'est-ce pas? Heureusement, je l'ai acheté, mais c'était très facile à comprendre et j'ai finalement pu arriver au point de départ. Cette fois également, je voudrais poursuivre la discussion avec une grande référence.

Load-to-block break-Apprenez la structure de base (Widget) de la programmation GUI …… -

Au fait, c'est une histoire jusqu'à ce que finalement une rupture de bloc avec la programmation kivy. Avant d'entrer dans le langage KV apparemment ésotérique, nous devions connaître la structure des programmes et widgets GUI en premier lieu. [Widget](https://ja.wikipedia.org/wiki/%E3%82%A6%E3%82%A3%E3%82%B8%E3%82%A7%E3%83%83%E3%83 % 88_ (GUI)), un mot célèbre qui apparaît sur Wikipédia ... Il semble que le programme GUI soit fait en combinant des widgets, mais le programme kivy est également fait en combinant des widgets avec diverses fonctions. On dit que le programme est géré en donnant à chaque Widget une relation parent-enfant (configuration d'une arborescence de Widget). En d'autres termes, il est important pour la création de programme d'avoir une relation hiérarchique avec chaque partie (Widget) comme les boutons et les étiquettes, et de comprendre où se trouve chaque partie. Dans un programme compliqué, il semble préférable de dessiner un diagramme pour que les relations soient faciles à comprendre.

Load-to-block break - Configurons une arborescence de widgets avec kivy-

Maintenant que nous savons quoi faire, configurons l'arborescence des widgets! Donc, j'ai essayé de faire quelque chose comme ce qui suit avec la référence dans une main. C'est un programme qui ajoute Label (description de chaîne de caractères) et Button (bouton) comme widget enfant en utilisant la méthode add_widget () à Boxlayout qui détermine la disposition.

main.py


#Importez le widget à utiliser. Cette fois, l'étiquette, le bouton et la disposition de la boîte.
from kivy.app import App
from kivy.uix.label import Label
from kivy.uix.button import Button
from kivy.uix.boxlayout import BoxLayout

#Une sous-classe de la classe App qui décrit le contenu de l'application
class testApp(App):
    #Définition de la méthode de construction à exécuter au démarrage de la boucle principale
	def build(self):
        #Création de l'objet Boxlayout et de l'objet Button
		layout1 = BoxLayout(orientation='vertical')
		button1 = Button(text='children')
		label1 = Label(text='children')
        #Ajout de button1 et label1 en tant que widgets enfants de layout1
		layout1.add_widget(button1)
		layout1.add_widget(label1)
		return layout1

#Début de la boucle principale
testApp().run()

Après avoir exécuté ce qui précède, l'écran suivant s'affiche. Étant donné que la disposition de la boîte de widgets parent a pour instruction d'orientation = 'vertical', les boutons et les étiquettes ajoutés en tant que widgets enfants sont alignés verticalement. Il est également possible de le changer côte à côte en changeant verticalement en horizontal.

test.png

Vous pouvez également créer une grande variété d'arborescences de widgets telles que les suivantes. Boxlayout a Button et Boxlayout comme widget enfant (enfants1), et Boxlayout du widget enfant (enfants1) a Button et Label comme widget enfant (enfants2).

main.py



from kivy.app import App
from kivy.uix.label import Label
from kivy.uix.button import Button
from kivy.uix.boxlayout import BoxLayout

class testApp(App):
	def build(self):
        #Création de l'objet Boxlayout et de l'objet Button
		layout1 = BoxLayout(orientation='vertical')
		button1 = Button(text='children1')
		layout2 = BoxLayout(orientation='horizontal')
		label2 = Label(text='children2')
		button2 = Button(text='children2')
        #Ajout de button2 et label2 comme widgets enfants de layout2
		layout2.add_widget(button2)
		layout2.add_widget(label2)
		#Ajout de button1 et layout2 en tant que widgets enfants de layout1
		layout1.add_widget(button1)
		layout1.add_widget(layout2)
		return layout1

testApp().run()

Le résultat de l'exécution est le suivant. J'ai pu créer une structure un peu compliquée. J'ai l'impression de m'être enfin installé à l'entrée de la création de l'interface graphique.

test.png

Résumé et avenir

Cette fois, j'ai créé un programme simple pour comprendre la structure de base de l'arborescence des widgets pour afficher les pièces à l'écran. La prochaine fois, j'expliquerai comment créer des liens entre les boutons et les étiquettes placés dans l'arborescence des widgets.

Références / web

Kazuya Haraguchi (2018) "Programmation pratique de la bibliothèque Python Kivy -Application multi-tap réalisée avec Python-" Mikio Kubo, Asakura Shoten 254-12896-3 /) https://kivy.org/#home

Recommended Posts

Une histoire sur un amateur faisant une rupture de bloc avec python (kivy) ②
Une histoire sur un amateur faisant une rupture de bloc avec python (kivy) ①
L'histoire de la création d'une partition de type Hanon avec Python
Une histoire d'essayer un monorepo (Golang +) Python avec Bazel
J'ai essayé de créer un chargeur de démarrage x86 qui peut démarrer vmlinux avec Rust
Une histoire sur la façon dont les utilisateurs de Windows 10 ont créé un environnement pour utiliser OpenCV3 avec Python 3.5
Une histoire sur l'installation de matplotlib à l'aide de pip avec une erreur
Une histoire sur la création d'une courte chanson par hasard avec Sudachi Py
Une histoire à propos d'un débutant en python coincé avec aucun module nommé'ttp.server '
Une histoire sur le développement d'un type logiciel avec Firestore + Python + OpenAPI + Typescript
L'histoire de la création d'un module qui ignore le courrier avec python
Une histoire sur Python pop and append
L'histoire de la création d'un robot LINE pour le petit-déjeuner d'une université de 100 yens avec Python
[Python3] Une histoire bloquée avec la conversion du fuseau horaire
Une histoire sur la gestion des données binaires en Python
Une histoire sur l'implémentation d'un écran de connexion avec django
Une histoire sur l'exécution de Python sur PHP sur Heroku
Une histoire sur la modification de Python et l'ajout de fonctions
L'histoire de la création d'un outil pour charger une image avec Python ⇒ l'enregistrer sous un autre nom
Une histoire sur la création d'un environnement IDE avec WinPython sur un ancien système d'exploitation Windows.
Zakuzaku automatique, Bitcoin. Une histoire sur un débutant en Python faisant un tableau de contrôle de pièces en 1 minute
Une histoire sur un amateur de programmation d'arts libéraux qui obtient un examen de base de certification d'ingénieur Python3
Histoire de l'utilisation du jeton logiciel de Resona avec 1Password
Une histoire de prédiction du taux de change avec Deep Learning
L'histoire de la gestion de theano avec TSUBAME 2.0
Un mémo sur la création d'une application Django (Python) avec Docker
Une histoire sur une erreur lors du chargement d'un modèle TensorFlow créé avec Google Colab localement
[Python] Une histoire sur la création d'un bot LINE avec une fonction humaine pratique sans utiliser Salesforce [API de messagerie]
Une note sur l'utilisation de l'API Facebook avec le SDK Python
Comment convertir un tableau en dictionnaire avec Python [Application]
Une histoire sur la façon de spécifier un chemin relatif en python.
Créer un œuf avec python
Une histoire de compétition avec un ami dans Othello AI Preparation
Histoire de trébucher avec le tableau Python
L'histoire de la construction d'un serveur de cache PyPI (avec Docker) et de me rendre un peu heureux à nouveau
[Note] Une histoire sur la tentative de remplacer une méthode de classe avec deux barres inférieures dans la série Python 3.
Faites une loterie avec Python
Apprentissage automatique Une histoire sur des personnes qui ne sont pas familiarisées avec GBDT utilisant GBDT en Python
Une histoire sur une guerre lorsque deux nouveaux arrivants ont développé une application
Un mémorandum sur le simulacre de Python
[Python Kivy] Comment créer un fichier exe avec pyinstaller
Automatisez la fabrication des sushis avec Python
Créer un répertoire avec python
Une histoire sur la tentative d'implémentation de variables privées en Python.
Tourner un tableau de chaînes avec une instruction for (Python3)
L'histoire de la création d'un bot de boîte à questions avec discord.py
Une note sur [python] __debug__
[Python, Selenium, PhantomJS] Une histoire lors de la capture d'un site Web avec une charge paresseuse
Essayez d'extraire une chaîne de caractères d'une image avec Python3
[Python] J'ai créé une visionneuse d'images avec une fonction de tri simple.
Une histoire sur la tentative d'exécuter plusieurs versions de Python (édition Mac)
[Python] Qu'est-ce qu'une instruction with?
Découpez une image avec python
Résoudre ABC163 A ~ C avec Python
Faites fonctionner l'imprimante de reçus avec python