Kivy - Изменить цвет кнопки после нажатия? - PullRequest
0 голосов
/ 05 февраля 2019

У меня в приложении две кнопки, и они фиолетового цвета с белым текстом.Когда кнопка нажата, я хотел, чтобы цвет изменился на темно-фиолетовый.Очевидно, что я упускаю что-то простое, поскольку мой код не работает так, как я ожидал.

       Button:
            background_normal: ''
            background_color: utils.get_color_from_hex("#752db5")
            text: 'Sign Up'
            size_hint: .3, .3
            padding: 3, 1
            font_name: 'Roboto-Medium'
            background_color_down: utils.get_color_from_hex("#5b238d")  

1 Ответ

0 голосов
/ 05 февраля 2019

Лично мой любимый способ сделать что-то вроде этого - создать новый класс с именем LabelButton в файле .py и заставить его наследовать классы ButtonBehavior и Label kivy.Затем раскраска выполняется с помощью холста LabelButton, и вы все равно можете использовать функцию on_release, как любую обычную кнопку, потому что вы унаследовали ButtonBehavior.

Изменение цвета фонахолст может быть сделан действительно хорошим трюком.См. Мой пример.

в вашем .py файле включите этот код:

from kivy.uix.button import ButtonBehavior
from kivy.uix.label import Label

class LabelButton(ButtonBehavior, Label):
    pass

Тогда в вашем .kv файле вы можете сослаться на класс LabelButton:

LabelButton:
    canvas:
        Color: 
            rgb: (1,0,0,1) if self.state == 'normal' else (0,1,0,1) # Color is red if button is not pressed, otherwise color is green
        RoundedRectangle:
            size: self.size
            pos: self.pos
            radius: 10,20,30,40 # Play with these if you want smooth corners for your button
    text: "I am a LabelButton"
    color: (0,0,1,1) # text color is blue
    on_release:
        print("I have been clicked")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...