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