@Andrei1penguin1

Почему не открывается файл?

Доброго времени суток, есть код KV:
Image:
        id: my_image
        source: ""
FileChooserIconView:
    size_hint: None, None
    size: 200, 200
    on_selection: mywidget.selected(self.selection)

Код Python:
def selected(self, filename):
        print(filename)
        try:
            self.ids.my_image.source = filename[0]
        except:
            pass

def load(self):
    a = FileChooserIconView()
    a.on_selection = self.selected(a.selection)
    popup = Popup(title='Select file', content=a)
    popup.open()

Если я выбираю файл через filechooser, созданный в KV, то у меня прекрасно файл отображается на изображении, но если же я выбираю файл через filechooser, созданный в функции load(), файл не отображается
То есть буквально отладочный print в первом случае выводит имя файла, во втором случае-пустой массив
Может я во втором случае не так обращаюсь к filechooser?
  • Вопрос задан
  • 107 просмотров
Решения вопроса 1
Vindicar
@Vindicar
RTFM!
Никогда не работал с этим фреймворком, но есть подозрение.
a.on_selection = self.selected(a.selection)
ты присваиваешь свойству on_selection возвращаемое значение метода selected(). Так как метод ничего не возвращает, это None. Т.е. ты говоришь, что никакой реакции на on_selection не надо делать.
Подозреваю, что правильно будет
a.on_selection = self.selected
и обрати внимание, что нет скобок! Вместо вызова метода мы передаём ссылку на него.

Далее, можно было бы и самостоятельно догадаться в чём дело, но тебя сбило с толку вот эта "обработка" исключений:
try:
            self.ids.my_image.source = filename[0]
        except:
            pass

Возьми хорошую железную линейку, и пару раз врежь себе по пальцам, чтобы запомнить что так делать не стоит никогда. Теперь вместо сколь-нибудь вменяемого сообщения об ошибке, по которому можно докопаться до её первопричины, программа просто молча не работает.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы