Я пытаюсь показать изображение из URL (хранится в списке) в виджете изображений в kivy, это моя функция:Ошибка получения изображения из URL
class ImageScreen(Screen):
image_source = ObjectProperty()
def get_image(self):
filename = 'imagelist.txt'
txt = open(filename, 'r')
with txt as file:
images = [line.rstrip('\n') for line in txt]
n = random.randint(0, len(images))
self.image_source.source = str(images[n])
Вот мой виджет в .kv :
<ImageScreen>:
image_source: imagesource
on_enter: root.get_image()
Image:
id: imagesource
source: 'preload.jpg'
Когда я вызвать функцию я получаю эту ошибку:
[ERROR] [Image] Error reading file http://www.webcomics.it/scottecscomics/files/2015/09/342-Gelado.jpg
Я попытался с AsyncImage виджетом вместо изображения:
AsyncImage:
id: imagesource
source: 'preload.jpg'
, но я получаю эту ошибку:
Exception: Unknown <jpe> type, no loader found.
an integer is required
Я могу открыть изображение в браузере копирования URL из ошибок, и иметь kivy, чтобы показать его, если загружен локально ... Что я делать не так?
EDIT: Я попытался загрузить много файлов изображений, найденных в Интернете, проблема с .jpg файлами, отлично работает с файлами .png ... Но у меня нет проблем с отображением .jpg файлов, сохраненных локально ... Я действительно не имеют ни малейшего представления о том, как это исправить ...
У вас есть ошибка здесь: 'random.randint (0, len (images))' может возвращать 'len (images)', что приведет к более поздней 'IndexError'. Используйте 'random.randrange (0, len (images))' или еще лучше 'self.image_source.source = random.choice (images))'. – taleinat
Не могли бы вы показать точный код вашей попытки использовать 'AsyncImage'? – taleinat
@taleinat: Спасибо за подсказку random.choice (images), не думал, что мой код может эффективно вернуть len (изображения). Отредактирован код, показывающий виджет AsyncImage. – RingK