Links und Funktionen
Sprachumschaltung

Navigationspfad
Sie sind hier: Startseite / Tag der Informatik / 2018 / WS 7 PythonKivy / Hallo Welt / main.py


Inhaltsbereich

main.py

Python Source icon 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()

Funktionsleiste