问题:
我需要找到一种预加载我的.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*
在大多数情况下,它就像一个超级按钮,但是在程序流程的某些点上,不是图像而是仅出现黑色正方形(相同大小)。
因为完全相同的代码在程序流程中的其他位置起作用,所以我将重点放在图像上: 我测试了: 不同的图像-不同的图像类型-不同的图像大小
->所有结果完全相同。
然后我偶然发现了一个提示:如果我在出现问题的位置之前使用了相同的图形,则稍后可以完美地加载它。因此,我认为问题在于-为什么这么少在所有位置而不是始终发生这种情况-图像加载得不够快。因为RAM速度更快,所以当所有映像都位于RAM中时,它就可以工作。
所以我要解决的想法是在启动时将所有图像存储在内存中,这导致我回避了所提出的问题。
答案 0 :(得分:0)
也许您可以在其余代码运行之前先加载所有图像,将它们放在一个不可见的角落?
答案 1 :(得分:0)
在尝试将 gif 图片添加到代码中的ModalView
时,我也遇到了这个问题。
我找到的解决方案是使用AsyncImage
并将颜色设置为transparent (1,1,1,0)
,将 nocache 设置为 True ,然后通过绑定on_load
设置颜色。在我的情况下,这种方法效果很好。