Eine Geschichte über einen Amateur, der mit Python (Kivy) einen Blockbruch macht ①

Vorwort 1 Kivy bis Sie anfangen

Es ist ungefähr ein halbes Jahr her, seit ich ernsthaft mit dem Programmieren angefangen habe, aber als ich daran dachte, etwas zu machen, das wie eine App aussah, empfahl mir eine Taube, die ich auf Twitter getroffen hatte, Kivy, also begann ich mit Schwung. Ich hoffe, dass die Erklärung des Produktionsprozesses und der Inhalte anderen Menschen den Einstieg in die App-Entwicklung mit kivy erleichtert.

Vorwort 2 Was ist Kivy überhaupt?

kivy ist ein Python, mit dem Sie Multi-Tap-Apps entwickeln können. Als Open-Source-Bibliothek können mit kivy erstellte Apps auf iOS- / Android-Geräten ausgeführt werden, einschließlich PC-Umgebungen wie macOS, Windows und Linux. Darüber hinaus kann kivy zusammen mit Python auch eine eigene Sprache namens KV-Sprache verwenden. Diese Funktion macht das Programm vielschichtig. Es scheint, dass es schwierig ist, diese KV-Sprache zu verstehen, und dass sie Japanisch nicht sehr gut unterstützt.

Zuerst habe ich versucht, ein Tutorial zu machen, aber ich verstehe überhaupt nicht ...

Nun, selbst wenn Sie nur die Gliederung lesen, bin ich mir nicht sicher, ob Sie es vorerst nicht versuchen! Lassen Sie uns also kivy sofort installieren und kivy starten, indem Sie das Tutorial Pong Game erstellen. ~~~. Ich habe mit einem entspannten Gefühl angefangen, aber ich konnte so etwas mit Kopieren und Einfügen machen, aber ich habe keine Ahnung, was im Programm vor sich geht. Ich bin ein Amateur, daher verstehe ich nicht wirklich, was Widget ist, und selbst wenn ich zur detaillierten Erklärung gehe, kann ich nicht an alle Wörter denken, die ich nicht kenne. Aufgrund der oben erwähnten KV-Sprache ist die Struktur des Programms sehr schwer zu lesen. Es scheint, dass die Position und Größe dessen, was auf dem Bildschirm angezeigt wird, entschieden wird.

Ich bin mir nicht sicher. Gibt es gutes Material ... Es gibt.

Als ich nach gutem Material suchte, fand ich [kivy Programmierbuch](https: /) von Asakura Shoten, das immer verschuldet ist. /www.asakura.co.jp/books/isbn/978-4-254-12896-3/) ist raus, nicht wahr? Zum Glück habe ich es gekauft, aber es war sehr leicht zu verstehen und ich konnte endlich zum Ausgangspunkt kommen. Auch diesmal möchte ich die Diskussion mit großer Referenz fortsetzen.

Load-to-Block-Pause - Lernen Sie die Grundstruktur (Widget) der GUI-Programmierung kennen …… -

Übrigens ist es eine Geschichte, bis es endlich einen Blockbruch mit der Kivy-Programmierung gibt. Bevor wir uns mit der scheinbar esoterischen KV-Sprache befassten, mussten wir zunächst die Struktur von GUI-Programmen und Widgets kennen. [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)), ein berühmtes Wort, das auf Wikipedia erscheint ... Es scheint, dass das GUI-Programm durch Kombinieren von Widgets erstellt wird, aber das Kivy-Programm wird auch durch Kombinieren von Widgets mit verschiedenen Funktionen erstellt. Es wird gesagt, dass das Programm verwaltet wird, indem jedem Widget eine Eltern-Kind-Beziehung zugewiesen wird (Konfigurieren eines Widget-Baums). Mit anderen Worten, für die Programmerstellung ist es wichtig, eine hierarchische Beziehung zu jedem Teil (Widget) wie Schaltflächen und Beschriftungen zu haben und zu verstehen, wo sich die einzelnen Teile befinden. In einem komplizierten Programm scheint es besser, ein Diagramm zu zeichnen, damit die Zusammenhänge leicht zu verstehen sind.

Load-to-Block-Pause-Konfigurieren wir einen Widget-Baum mit kivy-

Nachdem wir nun wissen, was zu tun ist, konfigurieren wir den Widget-Baum! Also habe ich versucht, mit der Referenz in einer Hand etwas wie das Folgende zu machen. Es ist ein Programm, das Label (Zeichenkettenbeschreibung) und Button (Schaltfläche) als untergeordnetes Widget hinzufügt, indem Boxlayout die Methode add_widget () verwendet, die die Anordnung bestimmt.

main.py


#Importieren Sie das zu verwendende Widget. Diesmal Layout von Beschriftung, Schaltfläche und Box.
from kivy.app import App
from kivy.uix.label import Label
from kivy.uix.button import Button
from kivy.uix.boxlayout import BoxLayout

#Eine Unterklasse der App-Klasse, die den Inhalt der App beschreibt
class testApp(App):
    #Definition der Build-Methode, die ausgeführt werden soll, wenn die Hauptschleife gestartet wird
	def build(self):
        #Erstellung des Boxlayout-Objekts und des Button-Objekts
		layout1 = BoxLayout(orientation='vertical')
		button1 = Button(text='children')
		label1 = Label(text='children')
        #Button1 und label1 als untergeordnete Widgets von layout1 hinzugefügt
		layout1.add_widget(button1)
		layout1.add_widget(label1)
		return layout1

#Beginn der Hauptschleife
testApp().run()

Nach dem Ausführen des obigen Vorgangs wird der folgende Bildschirm angezeigt. Da das übergeordnete Widget-Box-Layout angewiesen wird, Ausrichtung = 'vertikal' zu verwenden, werden die als untergeordnete Widgets hinzugefügten Schaltflächen und Beschriftungen vertikal ausgerichtet. Es ist auch möglich, es nebeneinander zu ändern, indem vertikal in horizontal geändert wird.

test.png

Sie können auch eine Vielzahl von Widget-Bäumen erstellen, z. B. die folgenden. Boxlayout hat Button und Boxlayout als untergeordnetes Widget (Kinder1) und Boxlayout des untergeordneten Widgets (Kinder1) hat Button und Label als untergeordnetes Widget (Kinder2).

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):
        #Erstellung des Boxlayout-Objekts und des Button-Objekts
		layout1 = BoxLayout(orientation='vertical')
		button1 = Button(text='children1')
		layout2 = BoxLayout(orientation='horizontal')
		label2 = Label(text='children2')
		button2 = Button(text='children2')
        #Button2 und label2 als untergeordnete Widgets von layout2 hinzugefügt
		layout2.add_widget(button2)
		layout2.add_widget(label2)
		#Button1 und Layout2 als untergeordnete Widgets von Layout1 hinzugefügt
		layout1.add_widget(button1)
		layout1.add_widget(layout2)
		return layout1

testApp().run()

Das Ausführungsergebnis ist wie folgt. Ich konnte eine etwas komplizierte Struktur erstellen. Ich habe das Gefühl, dass ich mich endlich am Eingang zur GUI-Erstellung eingerichtet habe.

test.png

Zusammenfassung und Zukunft

Dieses Mal habe ich ein einfaches Programm erstellt, um die Grundstruktur des Widget-Baums für die Anzeige von Teilen auf dem Bildschirm zu verstehen. Beim nächsten Mal werde ich erklären, wie Schaltflächen und Beschriftungen im Widget-Baum platziert werden.

Referenzen / Web

Kazuya Haraguchi (2018) "Praktische Python-Bibliothek Kivy-Programmierung - Multi-Tap-App mit Python -" Mikio Kubo, Asakura Shoten 254-12896-3 /) https://kivy.org/#home

Recommended Posts

Eine Geschichte über einen Amateur, der mit Python (Kivy) einen Blockbruch macht ②
Eine Geschichte über einen Amateur, der mit Python (Kivy) einen Blockbruch macht ①
Die Geschichte, mit Python eine Hanon-ähnliche Partitur zu machen
Eine Geschichte über das Ausprobieren eines (Golang +) Python-Monorepo mit Bazel
Ich habe versucht, einen x86-Bootloader zu erstellen, der vmlinux mit Rust booten kann
Eine Geschichte darüber, wie Windows 10-Benutzer eine Umgebung für die Verwendung von OpenCV3 mit Python 3.5 erstellt haben
Eine Geschichte über die Installation von matplotlib mit pip mit einem Fehler
Eine Geschichte über das zufällige Erstellen eines kurzen Songs mit Sudachi Py
Eine Geschichte über einen Python-Anfänger, der mit dem No-Modul'http.server 'feststeckt.
Eine Geschichte über die Entwicklung eines weichen Typs mit Firestore + Python + OpenAPI + Typescript
Die Geschichte, ein Modul zu erstellen, das E-Mails mit Python überspringt
Eine Geschichte über Python Pop und Append
Die Geschichte, wie man mit Python einen 100-Yen-Frühstücks-Bot für die Universität macht
[Python3] Eine Geschichte, die bei der Zeitzonenkonvertierung steckt
Eine Geschichte über den Umgang mit Binärdaten in Python
Eine Geschichte über die Implementierung eines Anmeldebildschirms mit Django
Eine Geschichte über das Ausführen von Python auf PHP auf Heroku
Eine Geschichte über das Ändern von Python und das Hinzufügen von Funktionen
Die Geschichte, ein Tool zum Laden von Bildern mit Python zu erstellen ⇒ Speichern unter
Eine Geschichte zum Erstellen einer IDE-Umgebung mit WinPython unter einem alten Windows-Betriebssystem.
Automatisches Zakuzaku, Bitcoin. Eine Geschichte über einen Python-Anfänger, der ein 1-Minuten-Diagramm für Münzprüfungen erstellt
Eine Geschichte über einen Programmier-Amateur der Freien Künste, der eine Grundprüfung zur Python3-Ingenieurzertifizierung erhält
Geschichte der Verwendung von Resonas Software-Token mit 1Password
Eine Geschichte über die Vorhersage des Wechselkurses mit Deep Learning
Die Geschichte, wie theano mit TSUBAME 2.0 verwaltet wurde
Ein Memo zum Erstellen einer Django (Python) -Anwendung mit Docker
Eine Geschichte über einen Fehler beim Laden eines TensorFlow-Modells, das lokal mit Google Colab erstellt wurde
[Python] Eine Geschichte über das Erstellen eines LINE-Bots mit einer praktischen bemannten Funktion ohne Verwendung von Salesforce [Messaging-API]
Ein Hinweis zum Aufrufen der Facebook-API mit dem Python SDK
So konvertieren Sie mit Python [Anwendung] von einem Array in ein Wörterbuch
Eine Geschichte darüber, wie man einen relativen Pfad in Python angibt.
Ein Ei mit Python erstellen
Eine Geschichte über den Wettbewerb mit einem Freund in Othello AI Preparation
Stolpern Geschichte mit Python-Array
Die Geschichte, einen PyPI-Cache-Server (mit Docker) aufzubauen und mich wieder ein wenig glücklich zu machen
[Hinweis] Eine Geschichte über den Versuch, eine Klassenmethode mit zwei Unterbalken in der Python 3-Serie zu überschreiben.
Machen Sie eine Lotterie mit Python
Maschinelles Lernen Eine Geschichte über Menschen, die mit GBDT in GBDT in Python nicht vertraut sind
Eine Geschichte über einen Krieg, als zwei Neuankömmlinge eine App entwickelten
Ein Memorandum über den Python-Mock
[Python Kivy] So erstellen Sie mit pyinstaller eine exe-Datei
Automatisieren Sie die Sushi-Herstellung mit Python
Erstellen Sie ein Verzeichnis mit Python
Eine Geschichte über den Versuch, private Variablen in Python zu implementieren.
Drehen Sie ein Array von Zeichenfolgen mit einer for-Anweisung (Python3).
Die Geschichte, wie man mit discord.py einen Fragenkasten-Bot erstellt
Ein Hinweis zu [Python] __debug__
[Python, Selenium, PhantomJS] Eine Geschichte beim Scrapen einer Website mit fauler Last
Versuchen Sie, mit Python3 eine Zeichenfolge aus einem Bild zu extrahieren
[Python] Ich habe einen Bildbetrachter mit einer einfachen Sortierfunktion erstellt.
Eine Geschichte über den Versuch, mehrere Python-Versionen auszuführen (Mac Edition)
[Python] Was ist eine with-Anweisung?
Schneiden Sie ein Bild mit Python aus
Löse ABC163 A ~ C mit Python
Bedienen Sie den Belegdrucker mit Python