Python Can';t更新Kivy项目中的图像源

Python Can';t更新Kivy项目中的图像源,python,kivy,Python,Kivy,我想更改播放/暂停按钮的图像(一次为“play_icon.png”,一次为“pause_icon.png”)。问题是我对编程还不熟悉,我不知道为什么图像没有更新。我有一个名为Icon(Image)的类和其中的源图像,我正在从KivyApp(App)类更改源图像。当我从KivyApp打印源代码时,我看到它发生了变化,但按钮上的图像没有变化 以下是我的项目中的一些代码: main.py class Icon(Image): def __init__(self, **kwargs): supe

我想更改播放/暂停按钮的图像(一次为“play_icon.png”,一次为“pause_icon.png”)。问题是我对编程还不熟悉,我不知道为什么图像没有更新。我有一个名为Icon(Image)的类和其中的源图像,我正在从KivyApp(App)类更改源图像。当我从KivyApp打印源代码时,我看到它发生了变化,但按钮上的图像没有变化

以下是我的项目中的一些代码:

main.py

class Icon(Image):
def __init__(self, **kwargs):
    super(Icon, self).__init__(**kwargs)
    self.source = 'play_icon.png'

class KivyApp(App):

    app = App.get_running_app()

    def build(self):
        return ScreenManagement()

    def start_stop(self):
        if <condition>:
            Icon.source = 'pause_icon.png'
        else:
            Icon.source = 'play_icon.png'

Icon.source='pause_Icon.png'

这将更改
图标
类的
属性,该属性对您创建的该类的实例没有任何影响


您需要更改正在gui中显示的图标类实例的
source
属性。

感谢您的快速响应。现在我正试图更改
源属性,如下所示:
self.root.ids.mainpage.ids.btn.ids.icon.source='pause\u icon.png'
,我得到了一个错误:
'super'对象没有属性'\uuuu getattr\uuuu'
。很可能是您试图在ID存在之前访问它们。尝试反转它:使用
source:app.source
然后在app类
source=StringProperty()
中。然后,您可以更改
App.get_running_App().source
以将更改传播到您的小部件实例。它成功了。非常感谢你!
Button:
    id: btn
    on_press: app.start_stop()
    Icon:
        id: icon
        source: self.source
        size: self.parent.size
        x: self.parent.x
        y: self.parent.y
        keep_ratio: True