如何在kv文件中创建变量/属性?

时间:2019-11-11 21:29:32

标签: python python-3.x kivy kivy-language

我想在我的圆形按钮中创建一个“属性”,以便能够执行以下操作:

RoundedButton:
    radius: 30

我的python代码:我在pyhton中有此类:

class RoundedButton(Button):
    radius = NumericProperty(30)

在我的kv文件中:

<RoundedButton@Button>:
    background_color: 0,0,0,0  # the last zero is the critical on, make invisible
    canvas.before:
        Color:
            rgba: (.4,.4,.4,1) if self.state=='normal' else (0,.7,.7,1)  # visual feedback of press
        RoundedRectangle:
            pos: self.pos
            size: self.size
            radius: [10,]



<MenuScreen>
    GridLayout:
        size: root.width, root.height
        GridLayout:
            RoundedButton:
                size: 300, 300

我想写这样的东西:

<RoundedButton@Button>:
    radius: radius
    background_color: 0,0,0,0  # the last zero is the critical on, make invisible
    canvas.before:
        Color:
            rgba: (.4,.4,.4,1) if self.state=='normal' else (0,.7,.7,1)  # visual feedback of press
        RoundedRectangle:
            pos: self.pos
            size: self.size
            radius: [radius,]


<MenuScreen>
    GridLayout:
        size: root.width, root.height
        GridLayout:
            RoundedButton:
                size: 300, 300
                radius: 10

1 个答案:

答案 0 :(得分:0)

RoundedButton:
    radius: 30

您可以……拥有。这是做到这一点的方法。

但是,它附带了一些陷阱,以及与何时确切创建和访问属性有关的竞赛条件。您可能会也可能不会点击这些。通常,我认为在Python中定义类及其属性是一种更好的做法。

radius: radius

这一行没有意义,您未定义可变半径,请将其设置为某个实际值。