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