BoxLayout中的两个kivy图像

时间:2015-05-17 08:55:07

标签: python kivy

我试图用两个图像制作一个kivy程序,当我点击它们时应该改变它们。 但是,当我尝试将包含图像的两个小部件添加到BoxLayout时,我在0,0位置获得了一个图像 为什么选择BoxLayout与我的图像一起工作? 这是我的代码:

from kivy.app import App
from kivy.uix.widget import Widget
from kivy.lang import Builder
from kivy.core.window import Window
from kivy.properties import NumericProperty
from kivy.properties import StringProperty
from kivy.uix.button import Button
from kivy.uix.boxlayout import BoxLayout

class Feld(Widget):
    droga = StringProperty('hinterg.png')
    kr = StringProperty('kreuz.png')
    ks = StringProperty('kreis.png')
    def on_touch_down(self, touch):
        if self.collide_point(*touch.pos):
            self.droga = self.kr

root = Builder.load_string('''
BoxLayout:
    orientation: 'horizontal'
    Feld:
        id: a1
    Feld:
        id: a2

<Feld>:
    Image:
        source: root.droga



''')

class app(App):
    def build(self):
        Window.clearcolor = (0, 0.54, 1, 1)
        return root

if __name__ == "__main__":
    app().run()

1 个答案:

答案 0 :(得分:2)

您的Feld实例由BoxLayout定位,但图像显示在Image小部件中,该小部件是Feld的子级。由于Feld只是一个普通的Widget,它不会对其子节点施加任何自动位置或大小,因此两个实际图像的默认大小为(100,100),pos为(0,0)。

最好的解决方案是让Feld成为某种布局的子类,默认情况下会让子代填充自己,例如FloatLayout。