【问题标题】:Difference between "name" and "id" attributes in Kivy, and when should I use eachKivy 中“name”和“id”属性之间的区别,以及我应该何时使用它们
【发布时间】:2020-09-21 11:43:00
【问题描述】:

大家。怎么样了?

我找不到任何与此相关的帖子,所以在这里:

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


这是我用作示例的代码示例。请注意,我使用“name”属性从“Screen”类中引用对象,该属性运行良好,并且我还可以使用“id”属性从“TextInput”和“Button”中引用对象的值:

<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'
            

【问题讨论】:

    标签: python attributes kivy


    【解决方案1】:

    这不是选择的问题。 name 属性是 Screen 类的一部分,ScreenManager 使用它来操纵其子 Screens

    idskv 构建器 (kivy.lang.builder.Builder) 在规则中遇到 id 时创建。 id 被添加到包含id 的根小部件的ids 字典中。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-05-19
      • 1970-01-01
      • 1970-01-01
      • 2018-06-25
      • 2018-10-15
      • 1970-01-01
      相关资源
      最近更新 更多