Обновите источник прямоугольника на холсте, чтобы изменить фоновое изображение - PullRequest
0 голосов
/ 03 ноября 2019

базовый фрагмент из файла 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.souce в функции on_press. законно ли иметь идентификатор для прямоугольника на холсте?

Как мне достичь цели обновления фонового изображения экрана при нажатии кнопки?

1 Ответ

1 голос
/ 03 ноября 2019

Система 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("...")
...