main.py
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()