残疾锭床工人的背景颜色

时间:2016-10-17 10:30:45

标签: python kivy

我试图设置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不是正确的参数。但是我应该使用什么呢?

1 个答案:

答案 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类,因此要更改它们,您需要更改该类的属性。