问题描述
Kivy文档指出:“触摸微调器会显示一个下拉菜单,其中包含所有其他可用值,用户可以从中选择一个新的值。”是否有任何变通办法来判断用户为执行相同操作而选择的旧值?我真的很坚持,请帮帮我。
解决方法
您可以使用组成on_text
的{{1}}来触发想要运行的任何方法,而不是使用on_select
或Buttons
。这样,是否选择相同的DropDown
都没有关系。这是该方法的一个简单示例:
Button
上面的代码将from kivy.app import App
from kivy.lang import Builder
kv = '''
#:import Factory kivy.factory.Factory
<MySpinnerOption@SpinnerOption>:
on_release: app.spinner_selected(self.text)
RelativeLayout:
Spinner:
text: 'Choose One'
size_hint: 0.2,0.2
pos_hint: {'center_x':0.5,'center_y':0.5}
option_cls: Factory.get('MySpinnerOption')
values: ['1','2','3']
# on_text: app.spinner_selected(self.text) # not needed
'''
class TestApp(App):
def build(self):
return Builder.load_string(kv)
def spinner_selected(self,text): # whatever method you want to run
print('spinner selected:',text)
TestApp().run()
的{{1}}中on_release
的{{1}}设置为通常使用Buttons
分配的方法。现在,只要释放DropDown
之一,该方法就会被调用。