Python 在kivy小部件之间交换变量

Python 在kivy小部件之间交换变量,python,kivy,Python,Kivy,我想用kivy widgets在多框布局中制作一个程序,我想从Feld类中获取根widgetlevel的属性。 但是root.ids.level不起作用。 这是我的密码: class level(BoxLayout): kr = StringProperty('kreuz.png') ks = StringProperty('kreis.png') class Feld(Widget): weg = StringProperty('hinterg.png') d

我想用kivy widgets在多框布局中制作一个程序,我想从Feld类中获取根widgetlevel的属性。 但是root.ids.level不起作用。 这是我的密码:

class level(BoxLayout):
    kr = StringProperty('kreuz.png')
    ks = StringProperty('kreis.png')

class Feld(Widget):
    weg = StringProperty('hinterg.png')
    def on_touch_down(self, touch):
        if self.ids.my_image.collide_point(*touch.pos):
            self.weg = root.ids.level.kr

root = Builder.load_string('''
level:
    id: level
<level>:
    orientation: 'vertical'
    BoxLayout:
        id: box1
        orientation: 'horizontal'
        Feld:
            pos: 100, 310
            id: a1
<Feld>:
    Image:
        pos: root.pos
        id: my_image
        source: root.weg
''')

class TTT(App):
    def build(self):
        return root

if __name__ == "__main__":
    TTT().run()
root关键字指的是当前kv规则的根,而不是应用程序的根小部件。您可以改用app.root。

这应该会有所帮助。