【问题标题】:how do i disable a widget based on the value of another widget in Kivy如何根据 Kivy 中另一个小部件的值禁用小部件
【发布时间】:2017-07-20 03:12:23
【问题描述】:

我在 .kv 文件中有一个 Spinner 小部件,我需要此 Spinner 的值来启用另一个 Spinner 小部件。

这是我尝试过的代码,但它不起作用并给我一个语法错误:

CustLabel:
    text: "Aux LO Pump Status"


CustSpinner:
    id: auxlo
    text: "Select"
    values: ('On', 'Off')
    focus: True
    on_state: (self.auxlonum.disabled) if (self.auxlo == 'off')

CustLabel:
    text: "Aux LO Pump Number"

CustSpinner:
    id: auxlonum
    text: "Select"
    values: ('# 1', '# 2')
    focus: True

我实际上更希望 auxlonum 小部件从禁用和“灰显”开始,然后仅在选择 auxlo 小部件“打开”时启用,但我不知道如何去做。

谢谢。

【问题讨论】:

    标签: python python-2.7 kivy kivy-language


    【解决方案1】:

    首先,您不能使用on_state 事件,因为它会在您选择一个值之前发出。您需要改用on_text 事件。

    另一方面,self.auxlonum 是不正确的语法,您应该只使用 id 来引用 kv 内的任何小部件。

    最后,你只需要使用三元运算符语法就可以为所欲为:

    Spinner:
        id: auxlo
        on_text: auxlonum.disabled = True if auxlo.text == 'Off' else False
    

    或者:

    Spinner:
        id: auxlonum
        disabled: True if auxlo.text == 'Off' else False
    

    可执行示例:

    from kivy.app import App
    from kivy.uix.boxlayout import BoxLayout
    
    from kivy.lang import Builder
    
    
    Builder.load_string('''
    <MyWidget>
        orientation: 'vertical'
        Spinner:
            id: auxlo
            text: "Select"
            values: ('On', 'Off')
            focus: True
            on_text: auxlonum.disabled = True if auxlo.text == 'Off' else False
    
        Label:
    
        Spinner:
            id: auxlonum
            text: "Select"
            values: ('# 1', '# 2')
            focus: True
    
        Label:
    ''')
    
    
    class MyWidget(BoxLayout):
        pass
    
    class TestApp(App):
        def build(self):            
            return  MyWidget()
    
    TestApp().run()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-11-19
      • 1970-01-01
      • 1970-01-01
      • 2020-07-19
      • 1970-01-01
      • 1970-01-01
      • 2021-06-09
      相关资源
      最近更新 更多