努力从python中更新画布的图像源:
这是.KV部分:
BoxLayout:
orientation: "vertical"
padding: "5dp"
size_hint_y: 0.70
canvas.before:
Color:
rgb: .6, .6, .6
Rectangle:
pos: self.pos
size: self.size
source: "image.png"
在python方面,我有一个函数返回我要传递给源的新图像名称,以便将“image.png”更新为“image2.png”
我尝试在.kv中添加ID但不幸的是它不适用于“矩形”
有什么好主意吗?
答案 0 :(得分:1)
从外部可以很好地访问变量,例如内置名称(App实例为app
,主规则/类为root
,当前窗口小部件实例为self
。 Ids将无效,因为canvas
(之前,经典,之后)构建之前其他任何内容,因此您将无法在画布中访问ids
你为它构建画布的小部件。
在构建画布之后,诸如id之类的东西会按照你期望的方式工作。
from kivy.app import App
from kivy.lang import Builder
kv = '''
BoxLayout:
variable: 'blob'
orientation: 'vertical'
canvas:
Color:
rgb: 1, 1, 1
Rectangle:
source: app.test # self.variable
'''
class TestApp(App):
def build(self):
self.test = 'path'
return Builder.load_string(kv)
if __name__ == '__main__':
TestApp().run()