Links und Funktionen
Sprachumschaltung

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


Inhaltsbereich

main.py

Python Source icon main.py — Python Source, 3 KB (3393 bytes)

Dateiinhalt

import kivy
kivy.require ('1.9.0')


# Der SoundLoader kann Audiodateien abspielen.
# Das BoxLayout ermoeglicht es, mehrere Widgets
# neben- oder untereinander anzuordnen.
# Das Image kann eine Bilddatei darstellen.
from kivy.app import App
from kivy.core.audio import SoundLoader
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.image import Image
from kivy.uix.button import Button

# Unsere App heisst Tierschau.
class TierschauApp (App):

    def build(self):
        # Unser hierarchisch oberstes Layoutelement ist ein
        # BoxLayout, in welchem die Widgets von oben nach
        # unten angeordnet werden. Viele Autoren nennen das
        # oberste Element root. Ich habe mich fuer den Begriff
        # Elter entschieden.
        self.elter = BoxLayout (orientation = 'vertical')

        # Die Knopfleiste ist selbst wieder ein BoxLayout,
        # jedoch von links nach rechts orientiert. Wir wuenschen
        # uns, dass die Knopfleiste 100% der Breite und 10% der
        # Hoehe des gesamten Elternelements einnimmt.
        # Wir rufen hier den Konstruktor auf und setzen dabei
        # gleich zwei Attribute.
        self.knopfleiste = BoxLayout (orientation = 'horizontal', size_hint = (1, .1))

        # Im Bild stellen wir zunaechst eine einfarbige, leere
        # Bilddatei dar. Alle im Bild dargestellten Dateien sollen
        # proportional skaliert werden, so dass sie ins Bild
        # hineinpassen. Das Bild soll 100% der Breite und 90% der
        # Hoehe des gesamten Elternelements einnimmt.
        self.bild = Image (source = 'leer.png', allow_stretch = True, size_hint = (1, .9))

        # Wir erzeugen drei Knoepfe mit den Tiernamen als Aufschrift.
        self.elefantknopf = Button (text = 'Elefant')
        self.kolibriknopf = Button (text = 'Kolibri')
        self.pinguinknopf = Button (text = 'Pinguin')

        # Jedem der drei Knoepfe ordnen wir eine Funktion zu, die beim
        # Loslassen der Maus aufgerufen wird.
        self.elefantknopf.bind (on_release = self.elefantklick)
        self.kolibriknopf.bind (on_release = self.kolibriklick)
        self.pinguinknopf.bind (on_release = self.pinguinklick)

        # Wir fuegen die drei Knoepfe zur Knopfleiste hinzu. Da wir uns
        # fuer die Knoepfe keine relativen Groessen gewuenscht haben,
        # werden sie alle gleich gross nebeneinander dargestellt.
        self.knopfleiste.add_widget (self.elefantknopf)
        self.knopfleiste.add_widget (self.kolibriknopf)
        self.knopfleiste.add_widget (self.pinguinknopf)

        # Das Elternelement soll das Bild und die Knopfleiste enthalten.
        self.elter.add_widget (bild)
        self.elter.add_widget (knopfleiste)

        # Wir geben das Elternelement zurueck.
        return self.elter

    # Die drei Funktionen werden im obigen Kontext beim Loslassen der
    # jeweiligen Maustaste aufgerufen. Sie laden das passende Tierbild
    # und spielen die passende Audiodatei ab.
    def elefantklick (self, obj):
        self.bild.source = 'Elefant.png'
        SoundLoader.load ('Elefant.wav').play ()

    def kolibriklick (self, obj):
        self.bild.source = 'Kolibri.png'
        SoundLoader.load ('Kolibri.wav').play ()

    def pinguinklick (self, obj):
        self.bild.source = 'Pinguin.png'
        SoundLoader.load ('Pinguin.wav').play ()


if __name__ == '__main__':
    TierschauApp ().run()


Funktionsleiste