Search code examples
pythoncanvaskivykivy-language

Update canvas pictures


I am new to kivy and try to grasp the concept behind the kivy language. I try to have a button that changes its background picture on click. With my current code, I get no Errors, but the button doesn't do anything if I try to click it...

This is my code:

<ScatterTextWidget>:
orientation: 'vertical'
my_picture: 'picture.png'
Button:
    id: b1
    canvas.after:
        Rectangle:  
            id: m_r
            source: root.my_picture
            pos: self.pos
            size: self.size
    on_release: root.nextPicture()

.py:

from kivy.app import App

from kivy.uix.button import Button
from kivy.uix.floatlayout import FloatLayout

class ScatterTextWidget(FloatLayout):

    def nextPicture(self):
        self.ids.my_picture = 'newPicture.png'
        self.canvas.ask_update()
        return

class GuiApp(App):
    def build(self):
        return ScatterTextWidget()

if __name__ == "__main__":
    GuiApp().run()

What do I have to do to make my button show the new Picture?


Solution

  • Just change this line

    self.ids.my_picture = 'newPicture.png'
    

    to

    self.my_picture = 'newPicture.png'
    

    You are accessing a property not an id.