Как инициализировать атрибуты в вызываемом классе виджетов? - PullRequest
0 голосов
/ 19 апреля 2020

У меня есть настраиваемая кнопка переключения (цветной прямоугольник), когда я нажимаю кнопку, она отображает границу, а при повторном нажатии скрывает ее.

Как передать аргумент этому виджету?

class ColorSwatch(ToggleButtonBehavior, Widget):

    # Color Button
    def __init__(self, **kwargs):
        super(ColorSwatch, self).__init__(**kwargs)

        #Defaults
        self.up_border_color = self.border_color
        self.down_border_color = self.background_color
        self.border_color = self.down_border_color

    def on_state(self, widget, value):
        if value == 'down':
            # On checked show border
            self.border_color = self.up_border_color
        else:
            # On checked hide border
            self.border_color = self.down_border_color

Если я запускаю это

ColorSwatch(
            border_color=(1,1,1,1),
            border_size=10,
            background_color=(.32, 0.22, 0.55, 1),
        )

, я получаю следующую ошибку

 TypeError: object.__init__() takes exactly one argument (the instance to initialize)

1 Ответ

1 голос
/ 19 апреля 2020

Вам необходимо добавить свойства border_color, border_size и background_color к вашему ColorSwatch:

class ColorSwatch(ToggleButtonBehavior, Widget):
    border_size = NumericProperty(0)
    border_color = ListProperty([])
    background_color = ListProperty([])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...