在 Kivy 中更改按钮的背景颜色
问题描述
我是 Kivy 的新手,无法指定按钮的背景颜色.这是我的简单示例:
I'm new to Kivy and having trouble specifying the background color of a Button. Here's my simple example:
# 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"
我确定我遗漏了一些明显的东西,但我已经搞砸了一个多小时,却一无所获.该按钮似乎被染成了深红色:
I'm sure I'm missing something obvious, but I've been messing with this for over an hour now and getting nowhere. The button seems to get colored a hint of very dark red:
这不是为 Kivy 中的按钮指定背景颜色的方法吗?
Is this not the way to specify the background color for a Button in Kivy?
谢谢!
解决方案
啊,这是一个常见的混淆.问题是 Button.background_color
确实是一种 tint,而不仅仅是块颜色.由于默认背景是灰色图像(您通常会在制作无样式按钮时看到该图像),因此您最终看到的是该灰色图像的红色调 - 您观察到的暗红色.
Ah, this is a common confusion. The problem is that Button.background_color
really works as a kind of tint, not just a block colour. Since the default background is a grey image (the one you normally see if you make an unstyled button), what you end up seeing is a red tint to that grey image - which comes out as the dark red you observe.
您可以通过将背景图像替换为纯白色(不必超过几个像素)或使用 background_normal
来获得所需的行为和 background_down
属性.当您的 background_color 为新的纯白色图像着色时,您将获得所需的纯红色.
You can get the behaviour you want by replacing the background image to just one that's plain white (it doesn't have to be more than a few pixels), or by otherwise playing with the background_normal
and background_down
properties. When your background_color tints the new pure white image, you get the pure red you're after.
我想这在文档中不是很清楚,我会尝试改进它.
I guess this isn't so clear in the docs, I'll try to improve it.
相关文章