我试图设置Spinner的背景颜色,如果禁用的话。
以下是我在kv文件中尝试的内容:
<MySpinner@Spinner>:
background_normal: ''
background_disabled_normal: ''
disabled_color: (0, 0, 0, 1)
color: (0, 0, 0, 1)
background_disabled_color: (1,1,1,1)
background_color: (0.62,0.67,0.72,1)
显然background_disabled_color
不是正确的参数。但是我应该使用什么呢?
答案 0 :(得分:1)
它继承自Button
,因此,如果它不在spinner.py
文件中,则它会在button.py
您可以看到Button
使用图片作为背景,background_color
仅使用了图片,但是没有background_disabled_color
(afaik)。背景是这样的 - 您设置background_color
并且如果窗口小部件被禁用,它会将默认背景图像着色为禁用(这有点darker):
Button:
text: 'jump'
disabled: True
# background_disabled_normal: '' # allow to see the behavior w/o default disabled bg
background_color: (1,0,0,1)
要为禁用小部件实现另一种颜色而不是默认background_color
,您需要在background_color
被禁用时更改Button
(在您的情况下为Spinner
):
from kivy.lang import Builder
from kivy.base import runTouchApp
from kivy.uix.boxlayout import BoxLayout
Builder.load_string('''
<Test>:
Spinner:
id: special
values: [str(i) for i in range(10)]
size_hint_y: None
text: 'jump'
disabled: True
#background_disabled_normal: ''
background_color: (1,0,0,1) if not self.disabled else (0,1,0,1)
Button:
on_release: special.disabled = not special.disabled
''')
class Test(BoxLayout): pass
runTouchApp(Test())
请注意,这对于像DropDown
这样的孩子来说不会起作用,因为那些人使用different类,因此要更改它们,您需要更改该类的属性。