如何从KV文件更改源图像
我想创建一个简单的矩形小部件,并且想要显示一张图片。当我运行这个程序时,当然会在屏幕上看到这张图片。但是如果我在.py文件里想把这张图片换成别的,比如从狗换成猫,我就不知道该怎么做了。
<RectBlock>:
canvas:
Rectangle
size: 65, 90
pos: self.pos
source: 'dog.png'
<MyWidget>:
class RectBlock(Widget):
def __init__(self, **kwargs):
super(RectBlock, self).__init__(**kwargs)
class MyWidget(Widget):
def __init__(self, **kwargs):
super(MyWidget, self).__init__(**kwargs)
block = (RectBlock(pos=(140,150)))
self.add_widget(block)
我以为这事情会像下面这样简单:
block.source = Image('cat.png')
结果什么都没变,还是显示着狗的图片。
1 个回答
0
我明白你的问题。你希望在使用应用程序时,图片能够“刷新”,也就是说如果源文件发生变化,显示在小部件上的图片也要跟着变化。其实没有什么“奇迹公式”,这两个文件必须要有相同的名字。让我来解释一下:我们把图片“dog.png”的名字改成animal.png,同时把“cat.png”的名字也改成animal.png。当你用一个文件替换另一个文件时,虽然名字保持不变,但数据是不同的,这样Kivy就会自动识别文件内容发生了变化,并刷新图片。但要做到这一点,这两个文件的名字必须是一样的。如果我说得不清楚,请告诉我,我可以再解释一遍。