Events 如何使Kivy(KVlang)级联微调器集响应我的第一个on_版本?
我的级联微调器在主微调器的第二个版本中实现了我想要的功能 我如何在第一个版本中实现这一点 提前谢谢。这是我的KVlang和Python代码 克瓦朗:Events 如何使Kivy(KVlang)级联微调器集响应我的第一个on_版本?,events,event-handling,kivy,Events,Event Handling,Kivy,我的级联微调器在主微调器的第二个版本中实现了我想要的功能 我如何在第一个版本中实现这一点 提前谢谢。这是我的KVlang和Python代码 克瓦朗: # 0009_spinnerCascade.kv <MyLayout@BoxLayout>: orientation: 'vertical' Spinner: id: s1 text: 'colors' values: 'colors number
# 0009_spinnerCascade.kv
<MyLayout@BoxLayout>:
orientation: 'vertical'
Spinner:
id: s1
text: 'colors'
values: 'colors numbers days'.split()
size_hint_y: None
height: '48dp'
my_string_property: 'hello from s1'
on_release: s2.my_key = self.text
Label:
text: 'Mid label'
Spinner:
id: s2
text: 'choose one'
my_dict: {'colors': 'red green blue'.split(), 'numbers': '1 2 3'.split(), 'days':'mon tue wed'.split() }
my_key: 'numbers'
values: self.my_dict[self.my_key]
size_hint_y: None
height: '48dp'
MyLayout
release
在选择任何选项之前,当微调器打开并显示选项时,会触发该事件。此时s2.my_key
的值设置为s1.text
。选择选项后,release
事件不会触发,并且s2。my_键保持不变。然后,在第二次单击显示s1
选项列表后,将触发第二次release
事件,并将值ods2。my_key
最终设置为右侧值。用以下方法观察这种行为:
<MyLayout@BoxLayout>:
# ...
Spinner:
id: s1
# ...
on_release: s2.my_key = self.text ; print("spinner opened")
# ...
我实施了以下行为:
def callback(instance,value):
print(instance,value)
class spinnerName(Spinner):
values = ('1','2','3')
spinInstance = Spinner()
spinInstance.bind(text=callback)
每次单击微调器中的项目时,都会调用print(实例、值)。您能否提供一个示例,说明如何在不使用.kv文件的情况下在Python中实现这一点?
<MyLayout@BoxLayout>:
# ...
Spinner:
id: s1
# ...
on_text: s2.my_key = self.text ; print("option selected")
# ...
def callback(instance,value):
print(instance,value)
class spinnerName(Spinner):
values = ('1','2','3')
spinInstance = Spinner()
spinInstance.bind(text=callback)