我如何在 Kivy + Python 上重新加载图像

How I can reload an image on Kivy + Python

我正在使用 kivy + phyton 为 IOS 和 Androdi 开发数字目录,但我不知道如何为这种情况重新加载图像。

在 main.py

class Pgrid(Screen):
   _ImagenFavorito = str

   def get_ImgFavorito(self, arg):
      img = arg
      for i in range(len(Heart_Array)):
        if Heart_Array[i][0] == img and Heart_Array[i][1] == 0:
            return 'data/icons/black/heart_empty_icon&16.png'
        else:
            if Heart_Array[i][0] == img and Heart_Array[i][1] == 1:
                return 'data/icons/black/heart_icon&16.png'

def update_corazon(self, picid):
    #lg = picid
    for i in range(len(Heart_Array)):
        if Heart_Array[i][0] == picid:
            Heart_Array[i][1] = 1
            return 'data/icons/black/heart_icon&16.png'
pass

.kv 文件

<Pgrid>:
   BoxLayout:
      orientation: 'vertical'
      canvas.before:
        Color:
            rgb: .9, .9, .9
       Rectangle:
            size: self.size
            source: 'data/background_lite.png'
    BoxLayout:
        GridLayout:
            rows: 3
            colds: 4
            spacing: 10
            padding: 10, 10

            #GRID 1.1
            GridLayout:
                rows: 2
                clods: 1
                Image:
                    id: pic11
                    source: 'data/products/camabe.jpg'
                BoxLayout:
                    size_hint:1, 0.1
                    canvas.before:
                        Color:
                            rgba: 0, 0, 0, 0
                        Rectangle:
                            size: self.size
                            pos: self.pos
                    ImageButton:
                        id: 11
                        source: root.get_ImgFavorito(11)
                        #size_hint: .2, .2
                        pos_hint: {'center_y': 0.50, 'center_x': 0.50}
                        on_press: root.update_corazon(11)

当我 运行 并单击 ImageButton 调用 roo.update_corazon(11) 并更新 Heart_Array 但我不知道如何重新加载此 ImageButton 的源。

有什么想法吗? 提前致谢


在我的 .py 上,我更改为:

 def update_corazon(self, picid):
    for i in range(len(Heart_Array)):
        if Heart_Array[i][0] == picid:
            Heart_Array[i][1] = 1
            self.manager.current = 'pgrid'

现在我认为 self.manager.current = 'pgrid' 将重新加载 Pgrid 屏幕,但不要重新加载屏幕:(

最后我改变了很多这样的东西,现在一切正常了:

self.remove_widget(Pgrid(name='pgrid')) 
self.add_widget(Pgrid(name='pgrid')) 

仅在 .kv 上 -> on_press: root.update_corazon(xx)