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