在Kivy中更改Button的背景颜色

Fiv*_*ver 17 python kivy

我是Kivy的新手,无法指定Button的背景颜色.这是我的简单例子:

# custombutton.py

from kivy.app import App
from kivy.uix.widget import Widget


class MyWidget(Widget):
    pass


class CustomButtonApp(App):
    def build(self):
        return MyWidget()


if __name__ == '__main__':
    CustomButtonApp().run()
Run Code Online (Sandbox Code Playgroud)

以及随附的kv文件custombutton.kv:

#:kivy 1.7.2

<MyWidget>:
    canvas:
        Color:
            rgb: (0.93, 0.93, 0.93)
        Rectangle:
            pos: self.pos
            size: self.size

    Button:
        center: self.parent.center
        font_size: 14
        height: 28
        background_color: (1.0, 0.0, 0.0, 1.0)
        text: "I'm a Button"
Run Code Online (Sandbox Code Playgroud)

我确定我错过了一些明显的东西,但是我现在已经乱了一个多小时而且无处可去.按钮似乎有一丝深红色:

在此输入图像描述

这不是在Kivy中为Button指定背景颜色的方法吗?

谢谢!

inc*_*ent 23

啊,这是一个常见的混乱.问题是,它Button.background_color真的起到了一种色彩的作用,而不仅仅是块色.由于默认背景是灰色图像(如果您制作一个没有样式的按钮,通常会看到的图像),您最终看到的是该灰色图像的红色 - 这是您观察到的暗红色.

您可以通过将背景图像替换为纯白色(不必超过几个像素)或者使用background_normalbackground_down属性进行替换来获得所需的行为.当你的background_color为新的纯白色图像着色时,你会得到你所追求的纯红色.

我想在文档中不太清楚,我会尝试改进它.


Tay*_*r D 10

自从这是第一次发布以来已经有一段时间了,所以可能有更新,他们提出了更好的解决方案:

Button:
    background_normal: ''
    background_color: 1, .3, .4, .85
Run Code Online (Sandbox Code Playgroud)

由于Button具有默认灰色,因此添加背景颜色只会使按钮着色.通过将background_normal设置为'',将默认值重置为白色.从白色画布中,background_color可以像您期望的那样工作.

文档

1)https://kivy.org/docs/api-kivy.uix.button.html?highlight=button#module-kivy.uix.button