我如何在 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)
我正在使用 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)