2017-04-16 105 views
0

我看着this的问题,但那是不同的。kivy:如何在BoxLayout中放置图像?

我刚开始用kivy,所以我想这是很简单的东西:\

我想两个图像放置到的BoxLayout。这是我到目前为止的代码:

import kivy 
kivy.require('1.9.1') 

from kivy.app import App 
from kivy.core.image import Image as CoreImage 
from kivy.uix.boxlayout import BoxLayout 

class TestApp(App): 

    def build(self): 
     layout = BoxLayout(orientation='horizontal') 

     im1 = CoreImage("image1.png") 
     im2 = CoreImage("image2.png") 

     layout.add_widget(im1) # this is line 33 
     layout.add_widget(im2) 

     return layout 

if __name__ == '__main__': 
    TestApp().run() 

程序不显示一个窗口,但打印此错误信息到终端:

Traceback (most recent call last): 
    File "./myprog.py", line 39, in <module> 
    TestApp().run() 
    File "/usr/lib/python3.6/site-packages/kivy/app.py", line 802, in run 
    root = self.build() 
    File "./myprog.py", line 33, in build 
    layout.add_widget(im1) 
    File "/usr/lib/python3.6/site-packages/kivy/uix/boxlayout.py", line 212, in add_widget 
    pos_hint=self._trigger_layout) 
    File "kivy/_event.pyx", line 438, in kivy._event.EventDispatcher.bind (kivy/_event.c:6473) 
KeyError: 'pos_hint' 

存在的图像。如果我将pos_hint={'x':0,'y':0}添加到CoreImage“构造函数”中,我会得到相同的错误。

我正在使用python 3.6.0和kivy 1.9.1

回答

1

核心图像不是小部件。您应该改用kivy.uix.image
kivy.core.image

核心类加载图像并将其转换为纹理。原始图像数据可以保存在内存中以便进一步访问。

因此,为了使您的工作例如:

from kivy.app import App 
from kivy.uix.image import Image 
from kivy.uix.boxlayout import BoxLayout 

class TestApp(App): 

    def build(self): 
     layout = BoxLayout(orientation='horizontal') 

     im1 = Image(source="image1.png") 
     im2 = Image(source="image2.png") 

     layout.add_widget(im1) 
     layout.add_widget(im2) 

     return layout 

if __name__ == '__main__': 
    TestApp().run()