Как загрузить изображения в оперативную память для последующего использования в файле .kv (Kivy + Python) - PullRequest
0 голосов
/ 11 марта 2019

Вопрос:

Мне нужно найти способ предварительной загрузки моих файлов .png, потому что в некоторых точках моего кода графические элементы, которые должны быть кнопками, отображаются в виде черных квадратов, а в других точках (точно такой же код) они работают идеально. Я хотел бы сделать это в классе Python при запуске, и присоединить их позже в моих файлах .kv. Суть в том, что я использую source: и «предварительная загрузка» строки, подобной 'assets/graphics/buttons/newImg.png', будет хранить строку, а не изображение. И если я загружаю изображение другим способом, я не знаю, как потом прикрепить это к своим кнопкам.

Любые советы и / или идеи приветствуются!

Справка:

Я создал свои кнопки так:

<MyButton@ButtonBehavior+Image>
    widgetTarget: ''
    source: 'assets/graphics/buttons/' + self.widgetTarget + '.png'
    on_press:
        self.source = 'assets/graphics/buttons/' + self.widgetTarget + '_clicked.png'
    on_release:
        self.source = 'assets/graphics/buttons/' + self.widgetTarget + '.png'

и используйте его в моих файлах .kv:

CustomButtonNoTarget:
        id: meIsButton
        widgetTarget: 'stopSign'
        on_release:
           *do stuff here*

В большинстве случаев это работает как брелок, но в определенных точках программы вместо изображений появляются только черные квадраты (одинакового размера).

Поскольку точно такой же код работал на других позициях в программном потоке, я сосредоточился на изображениях: Я проверял: разные изображения - разные типы изображений - разные размеры

-> все результаты одинаковы.

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

Итак, моя идея решить эту проблему - сохранить все изображения в памяти при запуске, что привело меня к заданному вопросу.

1 Ответ

0 голосов
/ 11 марта 2019

Возможно, вы могли бы загрузить все изображения заранее, поместить их в угол, невидимый, до запуска остальной части вашего кода?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...