Текст пользовательской кнопки Kivy - PullRequest
0 голосов
/ 26 октября 2018

Каков наилучший способ добавить текст к пользовательской кнопке со стороны Python? Вот мой код:

class CircularButton(ButtonBehavior, Widget):

        # code inspired from:
        # https://github.com/kivy/kivy/issues/4263#issuecomment-217430358
        # https://stackoverflow.com/a/42886979/6924364
        # https://blog.kivy.org/2014/10/updating-canvas-instructions-declared-in-python/

    def __init__(self, **kwargs):
        super(CircularButton,self).__init__(**kwargs)

        self.add_widget(Label(text='test')) # <-- put this in the middle of the button

        with self.canvas:
            Color(rgba=(.5,.5,.5,.5))
            self.shape = Ellipse(pos=self.pos,size=self.size)

        self.bind(pos=self.update_shape, size=self.update_shape)

    def update_shape(self, *args):
        self.shape.pos = self.pos
        self.shape.size = self.size

    def collide_point(self, x, y):
        return Vector(x, y).distance(self.center) <= self.width / 2

При связывании с виджетом в файле .kv вы видите, что текстовая метка появляется в (0,0), а не в верхней части кнопки. Каков наилучший способ задать текст для этой пользовательской кнопки?

1 Ответ

0 голосов
/ 26 октября 2018

Если вы намереваетесь разместить метку в середине кнопки, событие on_press не будет работать, если вы щелкнете по тексту, лучше всего использовать метку напрямую, и рисование должно быть выполнено на canvas.before.

class CircularButton(ButtonBehavior, Label):
    def __init__(self, **kwargs):
        super(CircularButton,self).__init__(**kwargs)
        self.text='test'
        with self.canvas.before:
            Color(rgba=(.5,.5,.5,.5))
            self.shape = Ellipse(pos=self.pos,size=self.size)
        self.bind(pos=self.update_shape, size=self.update_shape)

    def update_shape(self, *args):
        self.shape.pos = self.pos
        self.shape.size = self.size

    def collide_point(self, x, y):
        return Vector(x, y).distance(self.center) <= self.width / 2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...