更改KV代码中的嵌套属性

时间:2018-07-15 22:35:54

标签: kivy kivy-language

在我的KV文件中,我在窗口中创建了一个Spinner小部件,其中包含大约10个项目。但是,当我打开下拉菜单时,它将填充窗口的整个垂直空间。

我在网上找到了一些解决方案,但是它们仅使用直接的Python代码进行显示。

示例:

spinner = Spinner(text='Test', values=('Hi', 'how', 'are', 'you', '?'))

spinner.dropdown_cls.max_height = 100

这是我当前的KV代码:

Spinner:
    size_hint_x: None
    width: 300
    font_size: 30
    text: "Static"
    values: "Static", "Breathing", "Spectrum Cycle", "Rainbow", "Wipe", "Bullet", "Strobe", "Starlight", "Nightlight"

我的问题是如何在我的KV代码中设置'dropdown_cls.max_height'属性?

1 个答案:

答案 0 :(得分:1)

解决方案

在kv文件中,执行以下操作。有关详细信息,请参阅代码段和示例。

DropDown max_height

创建一个类规则<MyDropdown@DropDown>:并添加max_height: 100

<MyDropdown@DropDown>:
    max_height: 100

微调框填充了整个垂直窗口空间

size_hint_x: None替换为size_hint: (None, None),以防止Spinner填充窗口的整个垂直空间。

示例

main.py

from kivy.lang import Builder
from kivy.base import runTouchApp

runTouchApp(Builder.load_string('''
#:import Factory kivy.factory.Factory

<MySpinnerOptions@SpinnerOption>:
    background_color: .4, .4, .4, 1

<MyDropdown@DropDown>:
    max_height: 100

<MySpinner@Spinner>:
    size_hint: (None, None)
    width: 300
    font_size: 30
    text: "Static"
    values: "Static", "Breathing", "Spectrum Cycle", "Rainbow", "Wipe", "Bullet", "Strobe", "Starlight", "Nightlight"

    dropdown_cls: Factory.MyDropdown
    option_cls: Factory.MySpinnerOptions

GridLayout:
    cols: 1

    MySpinner:

'''))

输出

Img01 Img02