首页 > 解决方案 > 更新画布中矩形的来源以更改背景图像

问题描述

KV文件的基本片段:

<FirstScreen>:
    background_image_rect: background_image_rect

    id: First_screen
    name: "First"
    canvas:
        Rectangle:
            id: background_image_rect
            pos: 0,0
            size: self.size
            source: "1.jpg"
    FloatLayout:
         ....

我在浮动布局中定义了一个按钮,我希望在按下时更改屏幕的背景图像。

我已经尝试了我对 Kivy 的有限知识所允许的,但我似乎没有让它发挥作用。

当我尝试将 Id 与矩形一起使用时,它不会给出错误运行但我将无法使用root.ids.background_image_rect.souceinon_press函数查找 id。在画布中有矩形的 id 是否合法?

如何实现按下按钮时更新屏幕背景图像的目标?

标签: python-3.xkivykivy-language

解决方案


id 系统处于小部件级别,它不适用于图形指令。

最简单的解决方案是将源绑定到属性并更新该属性:

<FirstScreen>:
    background_image_rect: background_image_rect

    id: First_screen
    name: "First"

    canvas:
        Rectangle:
            id: background_image_rect
            pos: 0,0
            size: self.size
            source: root.the_rect_source

在 Python 中:

class FirstScreen:
    the_rect_source = StringProperty("...")

推荐阅读