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()