Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何根据Kivy中另一个小部件的值禁用小部件_Python_Python 2.7_Kivy_Kivy Language - Fatal编程技术网

Python 如何根据Kivy中另一个小部件的值禁用小部件

Python 如何根据Kivy中另一个小部件的值禁用小部件,python,python-2.7,kivy,kivy-language,Python,Python 2.7,Kivy,Kivy Language,我在.kv文件中有一个微调器小部件,我需要这个微调器的值来启用另一个微调器小部件 这是我尝试过的代码,它不起作用,并给我一个语法错误: CustLabel: text: "Aux LO Pump Status" CustSpinner: id: auxlo text: "Select" values: ('On', 'Off') focus: True on_state: (self.auxlonum.disabled) if (self.au

我在.kv文件中有一个微调器小部件,我需要这个微调器的值来启用另一个微调器小部件

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

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小部件选择了“开”时才启用,但我不确定如何执行此操作


谢谢。

首先,您不能对状态事件使用
,因为它在您选择一个值之前发出。您需要在事件上使用

另一方面,
self.auxlonum
是一种不正确的语法,您应该使用
id
仅指kv中的任何小部件

最后,您只需使用三元运算符语法即可执行所需操作:

Spinner:
    id: auxlo
    on_text: 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()
从kivy.app导入应用
从kivy.uix.boxlayout导入boxlayout
从kivy.lang导入生成器
Builder.load_字符串(“”)
方向:“垂直”
微调器:
id:auxlo
文本:“选择”
值:(“开”、“关”)
焦点:正确
如果auxlo.text=='Off'否则为False,则on_text:auxlonum.disabled=True
标签:
微调器:
id:auxlonum
文本:“选择”
值:(“#1”和“#2”)
焦点:正确
标签:
''')
类MyWidget(BoxLayout):
通过
类TestApp(应用程序):
def生成(自):
返回MyWidget()
TestApp().run()

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