Я использую базу данных в реальном времени ( Firebase ), в которой хранятся URL-адреса изображений (и другие элементы), мое приложение извлекает данные из базы данных и отображает их на некоторых виджетах. Не могу опубликовать весь код здесь, потому что он очень длинный.
Мой класс AsyncImage выглядит так:
...
class MyAsyncImage(AsyncImage):
def __int__(self, **kwargs):
super(MyAsyncImage, self).__init__(**kwargs)
Clock.schedule_interval(self.set_image_source, 1/30)
def set_image_source(self, dt):
self.source = itemArray[3] #The image url is stored in this array
...
затем внутри моего файла .kv у меня есть:
<ViewContent@RelativeLayout>:
...
GridLayout:
spacing: 10
cols: 2
size_hint_y: None
height: 100
MyAsyncImage:
size: self.texture_size
pos: self.pos
код работает только один раз, я могу найти элемент, а затем отобразить его содержимое (включая изображение) на моих виджетах. Когда я go возвращаюсь и ищу другой элемент, обновленное содержимое отображается на виджетах как обычно ... но при загрузке изображения возникает ошибка ReferenceError ( слабо объект, на который есть ссылки, больше не существует найдите другой элемент, вот код:
class FirstLabel(Label):
def __init__(self, **kwargs):
super(FirstLabel, self).__init__(**kwargs)
self.size_hint = (.7, None)
self.height = 60
self.markup = True
Clock.schedule_interval(self.set_text, 1/30)
def set_text(self, dt):
if itemArray[0] != "":
self.text = itemArray[0] #this works
Я пытался сделать сильный реф, используя метод id.__self__
, он не работает. Кроме того, определение метода доступа, который возвращает источник, а затем установка source: self.get_image_source()
в файле .kv, работает ... но только один раз. Затем я получаю ReferenceError . Даже добавление и удаление виджета AsyncImage дает те же результаты ... та же ошибка. Это вызывает у меня серьезную головную боль.
Буду признателен за любую помощь, я уже давно ищу решение ... безуспешно. И я не могу продолжить свой проект, если ошибка не устранена. Пожалуйста, помогите.
Большое спасибо.