Kivy
- ein Toolkit für GUI-Programme¶
Kivy ist eines von mehreren Toolkits, mit denen sich in Python Programme mit einer graphischen Bedienoberfläche (Graphical User Interface, kurz: GUI) programmieren lassen. [1] Um Kivy mit Python3 nutzen zu können, müssen die folgenden Pakete installiert werden:
# Aktuelle Paketquellen hinzufügen:
sudo add-apt-repository ppa:kivy-team/kivy
# Paketquellen auf mögliche Updates prüfen:
sudo aptitude update
# Kivy-Pakete installieren:
sudo aptitude install cython3 python3-kivy python3-kivy-bin python3-kivy-common
# Kivy-Beispiele installieren (optional):
sudo aptitude install kivy-examples
Installiert man auch das Paket kivy-examples
, so können im Verzeichnis
/usr/share/kivy-examples
einige fertige Beispiel-Programme ausprobiert und
als Vorlage genutzt werden.
Ein „Hallo Welt“-Beispiel¶
Mit Kivy geschriebene Programme haben stets eine App
-Klasse, die am
einfachsten mittels Vererbung auf der Standard-App-Klasse
aufbauen kann. Diese Standard-Klasse stellt unter anderem eine run()
- und
eine build()
-Methode bereit, wobei letztere automatisch aufgerufen wird,
wenn das Programm mittels der run()
-Methode gestartet wird. Die
build()
-Funktion wiederum startet automatisch das graphische Bedienfenster,
und kann zugleich weitere Elemente in diesem Fenster platzieren; sie sollte
als Ergebnis stets das „Root“-Widget der Anwendung liefern.
Im einfachsten Fall soll ein schlichter „Button“ mittig im Fenster platziert werden, der die Bezeichnung „Hallo Welt!“ trägt. Ein erstes vollständiges Programm, das wiederum auf ein bereits vordefiniertes Button-Element zurückgreift, kann damit folgendermaßen aussehen:
# Datei: hello.py
import kivy
kivy.require('1.9.0') # Mindest-Version von Kivy
from kivy.app import App
from kivy.uix.button import Button
class HelloApp(App):
def build(self):
return Button(text='Hallo Welt!')
if __name__== "__main__":
HelloApp().run()
Das uix
-Modul stellt allgemeine GUI-Elemte bereit, wie beispielsweise
Widgets und Layouts.
Bei einem Aufruf der Programmdatei wird durch die if-main-Abfrage eine Instanz der App erzeugt und diese gestartet, wobei wiederum die
build()
-Funktion aufgerufen wird:
python3 hello.py
Damit erscheint folgendes „Anwendungs“-Fenster:
Dieses erste Programm hat keine weitere Funktion; es kann beendet werden, indem
auf das X
-Symbol geklickt wird oder in der Shell die Anwendung mittels
Ctrl c
unterbrochen wird.
Design-Anpassungen mittels einer .kv
-Datei
Das Layout einer Anwendung sollte für eine bessere Übersichtlichkeit,
Anpassungsfähigkeit und Wiederverwertbarkeit von der eigentlichen „Logik“ des
Programms getrennt sein („Model-View-Controller“). Mit Kivy wird dieser
Grundsatz in einer Art und Weise verfolgt, der stark an die Anpassung des
Layouts einer Webseite mittels CSS erinnert: Das Aussehen der einzelnen
graphischen Elemente eines Programms wird über eine entsprechende .kv
-Datei
festgelegt werden.
Beim Aufruf der Programm-Datei wird automatisch diejenige .kv
-Datei im
gleichen Verzeichnis geladen, deren Namen mit (in Kleinbuchstaben) dem Namen der
App-Klasse übereinstimmt: Hat die App-Klasse beispielsweise den Namen
HelloWorldApp
, so heißt die zugehörige .kv
-Datei helloworld.kv
. In
dieser Datei kann mit einer YAML-artigen
Syntax das Design einzelner „Widgets“ (Teilbereiche des Hauptfensters) sowie
deren Anordnung festgelegt werden.
… to be continued …
Links
Anmerkungen:
[1] | Weiter GUI-Toolkits für Python sind das in der Standard-Installation enthaltene Tkinter, sowie PyGTK, PyQT und wxPython (siehe Übersicht). Kivy ist allerdings das einzige in Python selbst geschriebene Toolkit und bietet somit eine sehr python-typische Syntax. |