我正在使用 Kivy 和 Python 2.7。 我熟悉如何更改静态按钮本身的颜色,但是按下按钮时如何更改按钮的颜色?默认为蓝色。
感谢您的帮助。
Kivy 框架使用button_normal 和button_down 的背景图像,background_color 仅着色,因此kv 语言中的行为可能不会如您所期望的那样:
<Button>:
background_color: 1, 0, 0 # Tints the button red
background_normal: 'images/button_normal.png' # A clear image gives a bright red.
background_down: 'images/button_down.png' # A gray image gives a duller red.
border: (2, 2, 2, 2) # Don't stretch the outer two pixels on each edge when resizing.
这种风格可以让你说出暗淡的边框和明亮的内部,并在按下按钮时将它们交换。如果你使用这个系统,图像将被导入,颜色被忽略。要解决此问题并解决您的问题,请删除背景颜色:
<Button>:
background_normal: 'images/button_normal.png' # Eg. A red button
background_down: 'images/button_down.png' # Eg. A green button
border: (2, 2, 2, 2) # Don't stretch the outer two pixels on each edge when resizing.
这会将按钮的颜色更改为您在图像中所做的任何颜色。值得注意的是,Kivy 非常擅长拉伸图像,所以如果你有单色按钮或小边框,你只需要一个小图像,我使用 8x8 像素。
Я не знаю, нужно ли вам сейчас или нет но можно сделать что-то подобное
button = Button(background_color=[1, 0,0,1])
button.bind(on_press=lambda _: self.change_color(button,[0,0,0,1]))
button.bind(on_touch_up=lambda _, x: self.change_color(button,[1,0,0,1]))
def change_color(btn, color):
btn.background_color=color