如何在Kivy中访问小部件的子级?

时间:2018-10-04 15:37:16

标签: python kivy kivy-language

我是使用Kivy的新手。我用一个Button子对象定义了一个FloatLayout对象。反正可以访问Button on_press事件和背景图像吗?

这是我尝试的代码:

<Tecla2@FloatLayout>:
    Button:
        size_hint: (0.95,1.05)
        pos_hint: {"center_x": 0.5, "center_y": 0.5}
        text: ""

Tecla2:
    self.Button.background_normal: "images/tecla_normal1.png"
    self.Button.background_down: "images/tecla_down1.png"
    self.Button.on_press: if(len(texto.text)<text_len): texto.text+="1"

另一种解决方案(我当前实现的一种解决方案)是定义一个Button并为每个实例使用新的FloatLayout,但它缺乏优雅感:

<Tecla@Button>:
    size_hint: (0.95,1.05)
    pos_hint: {"center_x": 0.5, "center_y": 0.5}
    text: ""

FloatLayout:                    
    Tecla:
        background_normal: "images/tecla_normal2.png"
        background_down: "images/tecla_down2.png"
        on_press: if(len(texto.text)<text_len): texto.text+="2"

反正有使用奇异语言进行此操作吗?这是最简单的示例,但是在其他情况下,我已经需要这样做。

1 个答案:

答案 0 :(得分:0)

  

反正有没有访问Button on_press事件和背景图像的地方?

好吧,您可以使用所创建按钮的相关属性:

<Tecla2@FloatLayout>:
    Button:
        size_hint: (0.95,1.05)
        pos_hint: {"center_x": 0.5, "center_y": 0.5}
        text: ""
        background_normal: "images/tecla_normal1.png"
        background_down: "images/tecla_down1.png"
        on_press: if(len(texto.text)<text_len): texto.text+="1"

也许您正在寻找其他东西?