在KV代码中更改嵌套属性
Change nested property in KV code
在我的 KV 文件中,我在 window 上创建了一个 Spinner 小部件,其中包含大约 10 个项目。但是,当我打开下拉菜单时,它会填满 window.
的整个垂直 space
我在网上找到了一些解决方案,但它们只显示直接 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' 属性?
解决方案
在 kv 文件中,执行以下操作。有关详细信息,请参阅代码段和示例。
下拉菜单 max_height
创建 class 规则,<MyDropdown@DropDown>:
并添加 max_height: 100
。
<MyDropdown@DropDown>:
max_height: 100
微调器填充整个垂直方向 window space
将 size_hint_x: None
替换为 size_hint: (None, None)
以防止 Spinner 填充 window.
的整个垂直 space
例子
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:
'''))
输出
在我的 KV 文件中,我在 window 上创建了一个 Spinner 小部件,其中包含大约 10 个项目。但是,当我打开下拉菜单时,它会填满 window.
的整个垂直 space我在网上找到了一些解决方案,但它们只显示直接 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' 属性?
解决方案
在 kv 文件中,执行以下操作。有关详细信息,请参阅代码段和示例。
下拉菜单 max_height
创建 class 规则,<MyDropdown@DropDown>:
并添加 max_height: 100
。
<MyDropdown@DropDown>:
max_height: 100
微调器填充整个垂直方向 window space
将 size_hint_x: None
替换为 size_hint: (None, None)
以防止 Spinner 填充 window.
例子
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:
'''))