Как создать переменные / свойства в файле kv? - PullRequest
0 голосов
/ 12 ноября 2019

Я хочу создать «свойство» в моей перенаправленной кнопке, чтобы иметь возможность делать что-то вроде:

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 голосов
/ 12 ноября 2019
RoundedButton:
    radius: 30

Можно и ... иметь. Это способ сделать это.

Тем не менее, он имеет некоторые ошибки и условия гонки, связанные с тем, когда именно свойство создается и может быть доступно. Вы можете или не можете ударить их. Обычно я считаю, что лучше определять класс и его свойства в Python.

radius: radius

Эта строка не имеет смысла, ваш радиус переменной не определен, установите для него какое-то фактическое значение.

...