Во-первых, это большой кусок кода, поэтому я постараюсь упростить его ради этого вопроса. У меня есть сценарий Kivy Language с корневым виджетом, панелью действий и макетом коробки. Общая структура кода выглядит примерно так (я не думаю, что это требуется для ответа на этот вопрос, но все же здесь): Root > MenuBarWidg > BoxLayout > Image + Other buttons/labels...
.
А вот как выглядит мой виджет в kivy (для boxlayout):
<DisplayPhoto>:
Image:
id: image_display
allow_strech: True
#StringProperty in the class
source: root.image_path
Button:
Внутри моего скрипта Python:
class DisplayPhoto(BoxLayout):
image_path = StringProperty()
def __init__(self, **kwargs):
super(DisplayPhoto, self).__init__(self)
self.image_path = 'reload.png'
#this is called from another class on a button press
def update(self):
self.image_path = 'new_image_path.png'
При вызове обновления в скрипте python ничего не происходит. Я пробовал print(self.image_path)
, который отображает new_image_path.png
, но это также строка, а не объект kivy.
Я пробовал такие вещи, как обновление source
, вызывая id
и т. д., но ничего не добился. Любая помощь приветствуется!