我只想在kv文件中定义一次小部件(在本例中为微调器)的形式,但可以在多个屏幕上使用它。其他屏幕调用了不同的输入屏幕(菜单等),其中许多屏幕具有我想要看起来相同的微调器。在这种情况下,我使用的是简单的微调器“ color_spin”。
我从另一个窗口打开menu1,这似乎可行:
<menu1>:
name: "menu1"
GridLayout:
cols:1
Label:
text: "Properties"
size_hint: 0.6,0.2
pos_hint: {"x":0.2,"top":1}
Spinner:
id: color
size_hint_max_y: 50
text: 'Color'
values: 'White','Purple','Blue','Green','Yellow','Orange','Red','Black','Grey'
# Callback
on_text: [do my thing]
但是我只想从许多不同的菜单中调用1个“ color_spin”,所以我想做这样的事情:
<menu1>:
name: "menu1"
GridLayout:
cols:1
Label:
text: "Properties"
size_hint: 0.6,0.2
pos_hint: {"x":0.2,"top":1}
Spinner:
[use spinner "color_spin", but how?]
<color_spin>:
Spinner:
id: color
size_hint_max_y: 50
text: 'Color'
values: 'White','Purple','Blue','Green','Yellow','Orange','Red','Black','Grey'
# Callback
on_text: [do my thing]
我对kivy很陌生,因此,我感谢您能提供的任何意见。
答案 0 :(得分:0)
首先创建您的ColorSpinner
:
<ColorSpinner@Spinner>:
size_hint_max_y: 50
text: 'Color'
values: 'White','Purple','Blue','Green','Yellow','Orange','Red','Black','Grey'
,然后将其添加到任意位置:
<menu1>:
name: "menu1"
GridLayout:
cols:1
Label:
text: "Properties"
size_hint: 0.6,0.2
pos_hint: {"x":0.2,"top":1}
ColorSpinner:
id: menu1_color
# Callback
on_text: [do my thing]
<color_spin>:
ColorSpinner:
id: color
# Callback
on_text: [do my thing]