Python 如何为微调器选择kivy旧值

Python 如何为微调器选择kivy旧值,python,python-3.x,kivy,spinner,kivy-language,Python,Python 3.x,Kivy,Spinner,Kivy Language,Kivy文档指出,触摸微调器会显示一个下拉菜单,其中包含所有其他可用值,用户可以从中选择一个新值。是否有任何解决方法来判断它是否是用户为执行相同操作而选择的旧值?我真的被这个问题困扰了,请帮我解决。您可以使用组成下拉列表的按钮来触发您想要运行的任何方法,而不是使用on_文本或on_select。这样,无论是否选择同一个按钮都无关紧要。下面是该方法的一个简单示例: from kivy.app import App from kivy.lang import Builder kv = ''' #:

Kivy文档指出,触摸微调器会显示一个下拉菜单,其中包含所有其他可用值,用户可以从中选择一个新值。是否有任何解决方法来判断它是否是用户为执行相同操作而选择的旧值?我真的被这个问题困扰了,请帮我解决。

您可以使用组成下拉列表的按钮来触发您想要运行的任何方法,而不是使用on_文本或on_select。这样,无论是否选择同一个按钮都无关紧要。下面是该方法的一个简单示例:

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()

上面的代码将微调器下拉列表中按钮的on_释放设置为通常使用“on_文本”指定的方法。现在,只要松开其中一个按钮,就会调用该方法。

保存所选的值,以便下次触摸微调器时可以进行比较。嘿@JohnAnderson,此解决方案不起作用,因为只有文本更改时才会调用onselect方法,因此当您选择相同的方法时,什么也没发生感谢John Anderson我已经为此挣扎了好几天