2015-09-29 45 views
0

我有一个网格布局,并添加了一些我想用来显示图片的CoreImage小部件。我选择不使用uix.image,因为CoreImage速度更快,我想经常在几张图片之间交换。如何使用Kivy的核心图像?

当我做self.add_widget(CoreImage('Transparent.png'))我的程序会崩溃。

Traceback (most recent call last): 
    File "/path/to/my/app.py", line 1030, in <module> 
    MyApp().run() 
    File "/usr/lib/python2.7/dist-packages/kivy/app.py", line 798, in run 
    root = self.build() 
    File "/path/to/my/app.py", line 702, in build 
    self.build_grid() 
    File "/path/to/my/app.py", line 696, in build_grid 
    self.grid.build_self() 
    File "/path/to/my/app.py", line 134, in build_self 
    self.add_widget(CoreImage('Transparent.png')) 
    File "/usr/lib/python2.7/dist-packages/kivy/uix/layout.py", line 80, in add_widget 
    size_hint=self._trigger_layout) 
    File "_event.pyx", line 436, in kivy._event.EventDispatcher.bind (kivy/_event.c:5429) 
KeyError: 'size_hint' 

我在做什么错?这工作正常,当我使用uix.image。

+0

核心图像工作正常,当我用kivy语言添加它。 –

回答

1

kivy.core.image.Image(我想这是你的意思)不是一​​个小部件,你不能像这样使用它。使用kivy.uix.image.Image

+0

什么是当时使用的核心图像?我想从内存中加载图像,所以速度并不那么慢。 –

+0

kivy.core.image.Image负责从文件(或其他地方)加载图像,如有必要,将其缓存起来,并将其转换为可由Image小部件或其他任何东西使用的opengl纹理。 Image小部件非常简单,大部分只是用CoreImage加载图像,然后显示结果,如果发现速度很慢,那么可能还有其他方法使其更快。 – inclement

+0

因此,当我使用uix.image加载同一图像的多个实例时,core.image通过让我的所有图像小部件从相同的core.image加载,从而使它更快。 –

0

我试图做同样的显示一堆内存加载的图像。这样的事情出来了:

from kivy.uix.image import Image 
from kivy.core.image import Image as CoreImage 

self.add_widget(Image(texture=CoreImage('Transparent.png').texture)) 

希望它有帮助。