【问题标题】:Kivy Spinner action when same value is selected选择相同值时的 Kivy Spinner 动作
【发布时间】:2020-11-06 01:48:46
【问题描述】:

我已经成功地实现了Kivy Spinner,如下所示,在选择值时进行了弹出窗口,第一次运行良好,但是如果我第二次单击相同的值,则该方法是第二次没有调用..我的想象是监听器必然会改变文本..即使连续选择相同的值,有没有办法执行事件,在这种情况下文本不会改变?

初始化

self.payment_spinner = self.ids.payment_spinner
self.payment_spinner.values = ['Cash', 'Card']
self.payment_spinner.bind(text=self.on_purchase_spinner_select)

方法

def on_purchase_spinner_select(self, spinner, text):
   today = date.today()
   print(today)

【问题讨论】:

  • 这个问题回答对了HERE

标签: python


【解决方案1】:

要实现此功能,您只需调用微调器打开的按钮,而不是使用微调器上的 on_text 方法。这是一个工作示例:

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

【讨论】:

    猜你喜欢
    • 2015-10-21
    • 2020-10-12
    • 2017-01-28
    • 2021-07-09
    • 1970-01-01
    • 1970-01-01
    • 2013-03-05
    • 2012-12-01
    相关资源
    最近更新 更多