Kivy 中 "name" 和 "id" 属性的区别,我应该什么时候使用它们

Difference between "name" and "id" attributes in Kivy, and when should I use each

各位。最近怎么样?

我找不到任何与此相关的 post,所以这里是:

我正在研究 kivy,我对它的基础有一些疑问。在 Kivy 中引用对象的“name:”和“id:”有什么区别?


这是我的代码示例,用作示例。请注意,我使用“名称”属性从“屏幕”class 引用对象,效果很好,而且我还可以使用“ id”属性:

<Button>:
    size_hint: 0.24, 0.1

<TextInput>:
    size_hint: 0.4, 0.1

ScreenManager:
    Screen:
        name: 'login_page'

        TextInput:
            id: email


        Button:
            id: login_button
            text: 'Go to main page'
            pos_hint: {"x": 0.38, "top": 0.2}
            on_release:
                app.root.current = 'main_page'
                root.transition.direction = 'left'
    Screen:
        name: 'main_page'
        
        FloatLayout:

            Button:
                text: 'Go to login page'
                pos_hint: {"x": 0.38, "top": 0.2}
                on_release:
                    app.root.current = 'login_page'
                    root.transition.direction = 'right'
            

这不是选择的问题。 name 属性是 Screen class 的一部分,被 ScreenManager 用来操纵它的 child Screens.

当在规则中遇到 id 时,idskv 生成器 (kivy.lang.builder.Builder) 创建。 id 被添加到包含 id.

的根小部件的 ids 字典中

因此,ScreenManager 的 children 只能使用 name 属性。并且您只能使用 ids 访问属于 kv 根小部件规则的小部件。