在 kivy 小部件之间交换变量

Posted

技术标签:

【中文标题】在 kivy 小部件之间交换变量【英文标题】:Exchanging variables between kivy widgets 【发布时间】:2015-08-05 23:22:55 【问题描述】:

我想在多个盒子布局中制作一个带有 kivy 小部件的程序,并且我想从 Feld 类中访问根小部件(级别)的属性。 但是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()

【问题讨论】:

***.com/questions/30202801/… 这应该会有所帮助。 【参考方案1】:

root 关键字是指当前 kv 规则的根,而不是应用程序的根小部件。您可以改用app.root

【讨论】:

以上是关于在 kivy 小部件之间交换变量的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Kivy 屏幕小部件中初始化实例

如何传递一个值来初始化 Kivy 中的屏幕小部件?

在子小部件中,如何在 kivy 中获取父小部件的实例

Kivy 在布局末尾添加小部件

Kivy:获取小部件 ID 并通过唯一属性访问小部件

在 Kivy 中传递自定义小部件属性