【问题标题】:Kivy - Update Canvas background with value passed from PythonKivy - 使用从 Python 传递的值更新 Canvas 背景
【发布时间】:2017-01-04 14:57:45
【问题描述】:

努力从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,但不幸的是它不适用于“矩形”

有什么好主意吗?

【问题讨论】:

    标签: python canvas background kivy


    【解决方案1】:

    变量可以从外部完美访问,例如内置名称(app 用于 App 实例,root 用于主规则/类,self 用于当前小部件实例)。 ID 将不起作用,因为 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()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-27
      • 2019-12-21
      • 1970-01-01
      • 2015-08-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多