Лично мой любимый способ сделать что-то вроде этого - создать новый класс с именем 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")