kivy:如何在BoxLayout中放置图像?

时间:2017-04-16 22:59:49

标签: python kivy

我看了this个问题,但那是不同的。

我刚刚开始使用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 个答案:

答案 0 :(得分: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()