BoxLayout 中的两个 kivy 图像

Two kivy Images in an BoxLayout

我试着用两个图像制作一个 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()

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

最好的解决方案是使 Feld 成为某些布局的子类,默认情况下会使其子项自行填充,例如 FloatLayout。