Вопрос:
Мне нужно найти способ предварительной загрузки моих файлов .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*
В большинстве случаев это работает как брелок, но в определенных точках программы вместо изображений появляются только черные квадраты (одинакового размера).
Поскольку точно такой же код работал на других позициях в программном потоке, я сосредоточился на изображениях:
Я проверял:
разные изображения - разные типы изображений - разные размеры
-> все результаты одинаковы.
Тогда я наткнулся на подсказку: если бы я использовал тот же рисунок ДО проблемной позиции, он позже отлично загрузился. Поэтому я думаю, что проблема в том, что - почему бы это ни происходило в нескольких местах, а не постоянно - изображение не может быть загружено достаточно быстро. Поскольку оперативная память работает быстрее, изображение уже находится в оперативной памяти.
Итак, моя идея решить эту проблему - сохранить все изображения в памяти при запуске, что привело меня к заданному вопросу.