2015-09-29 96 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)) 

希望它有幫助。