【问题标题】:Changing the background color of a Button in Kivy在 Kivy 中更改按钮的背景颜色
【发布时间】:2013-12-09 11:33:03
【问题描述】:

我是 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"

我确定我遗漏了一些明显的东西,但我已经把这个搞砸了一个多小时,却一无所获。该按钮似乎被染成了深红色:

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

谢谢!

【问题讨论】:

    标签: python kivy


    【解决方案1】:

    啊,这是一个常见的混淆。问题是Button.background_color 确实是一种tint,而不仅仅是块颜色。由于默认背景是灰色图像(您通常会在制作无样式按钮时看到该图像),因此您最终看到的是该灰色图像的红色调 - 您观察到的暗红色。

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

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

    【讨论】:

    • 我不太确定边界的东西在实践中是如何工作的。我只在我的小部件画布上直接用顶点指令(线等)绘制了自己的简单边框。
    • 您可以为background_normalbackground_down 图片添加边框:stackoverflow.com/questions/19005182/…。图像被分成 9 个网格,类似于 css border-image。您必须确保角匹配。
    【解决方案2】:

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

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

    由于按钮具有默认灰色,添加背景颜色只会为按钮着色。通过将 background_normal 设置为 '' 将默认设置为白色。在白色画布上, background_color 可以按您的预期工作。

    文档

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-19
      • 2021-02-18
      • 2015-06-04
      • 1970-01-01
      • 2021-06-22
      • 2015-04-03
      相关资源
      最近更新 更多