在Kivy中更改Button的背景颜色

时间:2013-11-24 21:28:27

标签: python kivy

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

# 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()

随附的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"

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

enter image description here

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

谢谢!

2 个答案:

答案 0 :(得分:18)

啊,这是一个常见的混乱。问题是Button.background_color确实可以作为一种色调,而不仅仅是块颜色。由于默认背景是灰色图像(如果你制作一个没有样式的按钮,你通常会看到的图像),你最终看到的是那个灰色图像的红色 - 这是你观察到的暗红色。

您可以通过将背景图片替换为纯白色(不必超过几个像素),或者使用background_normal和{{ 1}}属性。当你的background_color为新的纯白色图像着色时,你会得到你想要的纯红色。

我想这在文档中并不是那么清楚,我会尝试改进它。

答案 1 :(得分:8)

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

Button:
    background_normal: ''
    background_color: 1, .3, .4, .85

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

<强>文档

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