Kivy non-GUI events
<p>i am trying to start an animation when the app is first loaded. I.E. immediately after the loading screen has closed. I have tired the "on_enter" event but it doesn't seem to work, any help would be much appreciated.</p>

<pre><code>from kivy.base import runTouchApp
from kivy.lang import Builder
from kivy.uix.widget import Widget
from kivy.animation import Animation
from kivy.properties import ListProperty
from kivy.core.window import Window
from random import random
from kivy.graphics import Color, Rectangle

Builder.load_string('''
&lt;Root&gt;:
AnimRect:
    pos: 500, 300
&lt;AnimRect&gt;:
on_enter: self.start_animation
canvas:
    Color:
        rgba: 0, 1, 0, 1
    Rectangle:
        pos: self.pos
        size: self.size
''')

class Root(Widget):
pass

class AnimRect(Widget):
    def anim_to_random_pos(self):
        Animation.cancel_all(self)
        random_x = random() * (Window.width - self.width)
        random_y = random() * (Window.height - self.height)

        anim = Animation(x=random_x, y=random_y,
                     duration=4,
                     t='out_elastic')
        anim.start(self)

    def on_touch_down(self, touch):
        if self.collide_point(*touch.pos):
            self.anim_to_random_pos()

    def start_animation(self, touch):
        if self.collide_point(*touch.pos):
             self.anim_to_random_pos()

runTouchApp(Root())
</code></pre>

<p><a href="http://i.stack.imgur.com/8vPEC.png" rel="nofollow"><img src="http://i.stack.imgur.com/8vPEC.png" alt="print screen of error"></a></p>

<p>The <code>on_enter</code> method is defined in the <code>Screen</code>, not in the <code>Widget</code>. You should put that rectangle on a screen (the <code>Root</code> widget should be a screen here), and once the screen's <code>on_enter</code> event fires, start the rectangle animation.</p>

<p>Also, you are calling it incorrectly; function call should contain brackets, i.e. <code>on_enter: self.start_animation()</code></p>

python events event-handling kivy kivy-language