main.py
main.py
—
Python Source,
3 KB (3490 bytes)
Dateiinhalt
# Signalisiere, dass dies eine Kivy-Datei
# ist, die mindestens Version 1.9.0 erfordert.
import kivy
kivy.require ('1.9.0')
# Importiere alle fuer die App benoetigten
# Komponenten aus den passenden Paketen.
# App muessen wir immer importieren, dazu
# brauchen wir hier noch den Button.
# Komplizierte Apps brauchen weitere
# Widgets und fuer das Design meist auch
# Layouts.
from kivy.app import App
from kivy.uix.button import Button
# Unsere HalloWeltApp ist die einzige
# Instanz einer eigens geschriebenen
# Unterklasse von App.
class HalloWeltApp (App):
# Einruecken ist das wichtigste Syntax-
# Element von Python. Alles, was eingerueckt
# ist, ist der darueberliegenden Struktur
# (class, def, for, if, ...) untergeordnet.
# Das Design der App kann man auf zwei
# Arten festlegen: entweder man definiert
# die hierarchische Struktur mittels
# Python-Syntax (so machen wir es hier und
# in unseren weiteren Beispielen), oder man
# gibt die Struktur in einer Textdatei an,
# die aehnlich wie XML oder Java FX gegliedert
# ist und die man in der Funktion build
# importiert.
# Die Funktion build legt die Struktur der
# App fest. Jede Funktion (OO: "Methode") einer
# Python-Klasse besitzt als ersten Parameter
# das Klassenobjekt; traditionsgemaess nennt man
# diesen Parameter self. Jedem Attribut und
# jeder Funktion der Klasse wird stets self.
# vorangestellt. Variablen und Funktionen ohne
# self. sind entweder lokale Hilfsstrukturen
# oder (falls so deklariert) global.
# Typen deklariert man in Python nicht. Der Typ
# einer Variable ergibt sich zur Laufzeit aus
# dem Kontext.
# Die Funktion build besitzt als Rueckgabewert das
# hierarchisch hoechste Widget. Da wir hier nur ein
# Widget, naemlich den Knopf, haben, wird er von
# build zurueckgegeben.
def build (self):
# Der Knopf ist ein Button. Wir rufen den
# Konstruktor auf und setzen bei diesem Aufruf
# bereits ein Attribut, naemlich die Aufschrift
# des Knopfes.
self.knopf = Button (text = 'Hallo')
# Einem Ereignis des Knopfes wird eine Funktion
# zugeordet: Das Loslassen (release) des Knopfes
# soll naemlich bewirken, dass die
# selbstgeschriebene Methode knopfklick der
# Klasse HalloWeltApp aufgerufen wird.
self.knopf.bind (on_release = self.knopfklick)
# Der Knopf ist das hierarchisch hoechste Widget
# der App.
return self.knopf
# Der Knopfklick erhaelt zwei Parameter: das Klassenobjekt
# self und das aufrufende Objekt - wir nennen es hier obj.
# Im obigen Kontext ist das aufrufende Objekt immer der
# Knopf. Das muss aber nicht so sein - eine Funktion kann
# auch von mehreren verschiedenen Objekten aufgerufen
# werden.
def knopfklick (self, obj):
# Wir haengen an den Text des Knopfes ein Leerzeichen
# und die Welt an. In unserem Kontext waere ein dazu
# aequivalenter Code obj.text = obj.text + ' Welt'.
# In anderem Kontext wuerde er bewirken, dass ein
# beliebiges Widget beim Aufrufen der Funktion
# Knopfklick seine Aufschrift um Leerzeichen und Welt
# verlaengern kann.
self.knopf.text = self.knopf.text + ' Welt'
# Python soll eine Kivy-App normalerweise nur dann
# starten, wenn ihr Name main.py lautet.
if __name__ == '__main__':
HalloWeltApp().run()