我如何让Kivy(KVlang)级联微调器集响应我的第一个释放



我的级联微调器在主微调器的第二个版本上执行我想要的操作。

我如何才能在第一次发布时完成这项工作?

提前谢谢。这是我的KVlang和Python代码。

KVlang:

# 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

Python

''' 0009_spinnerCascade.py
'''
import kivy
kivy.require('1.8.0')
from kivy.app import App
from kivy.lang import Builder
from kivy.config import Config
Config.set('graphics', 'width',  '430')
Config.set('graphics', 'height', '430')
class MyApp(App):
    def build(self):
        self.root = Builder.load_file('0009_spinnerCascade.kv')
        return self.root
if __name__ == '__main__':
    MyApp().run()

release事件在微调器打开并显示选项时触发,然后再选择任何选项。在该时刻,CCD_ 2的值被设置为CCD_。选择选项后,不触发release事件,s2.my_key保持不变。然后,第二次单击显示s1选项列表后,会触发第二个release事件,并最终将值od s2.my_key设置为正确值。使用观察此行为

<MyLayout@BoxLayout>:  
    # ...  
    Spinner:  
        id: s1    
        # ...
        on_release: s2.my_key = self.text ; print("spinner opened")
    # ...  

您实际上需要观察text属性来检测更改:

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

每次单击Spinner中的项目时,都会调用print(实例,值)。

相关内容

  • 没有找到相关文章

最新更新