イベント(checkbox.active
)を対応するコールバックに関連付ける必要があります。あなたはbind
を使用しての.pyファイルでそれを行うことができます。
from kivy.app import App
from kivy.lang import Builder
from kivy.uix.floatlayout import FloatLayout
kv_text = """\
<MyWidget>
TextInput:
id: input
text: "2fbd3320a168d5c2e35"
pos_hint: {"x":0.1, "y":0.4}
size_hint: 0.5,0.05
background_disabled_normal: ""
disabled: True
CheckBox:
id: checkbox
pos_hint: {"x":0.6, "y":0.4}
size_hint: 0.05,0.05
"""
class MyWidget(FloatLayout):
def __init__(self, **kwargs):
super(MyWidget, self).__init__(**kwargs)
self.ids.checkbox.bind(active=self.disable_input)
def disable_input(self, checkbox, checked):
self.ids.input.disabled = not checked
class MyWidgetApp(App):
def build(self):
return MyWidget()
def main():
Builder.load_string(kv_text)
app = MyWidgetApp()
app.run()
if __name__ == '__main__':
main()
別のオプションは、.kvファイルでそれを行うことです。
from kivy.app import App
from kivy.lang import Builder
from kivy.uix.floatlayout import FloatLayout
kv_text = """\
<MyWidget>
TextInput:
id: input
text: "2fbd3320a168d5c2e35"
pos_hint: {"x":0.1, "y":0.4}
size_hint: 0.5,0.05
background_disabled_normal: ""
disabled: not checkbox.active # <<<<<<<<<
CheckBox:
id: checkbox
pos_hint: {"x":0.6, "y":0.4}
size_hint: 0.05,0.05
"""
class MyWidget(FloatLayout):
pass
class MyWidgetApp(App):
def build(self):
return MyWidget()
def main():
Builder.load_string(kv_text)
app = MyWidgetApp()
app.run()
if __name__ == '__main__':
main()
![enter image description here](https://i.stack.imgur.com/5eYiR.gif)
youreの最善を;) – Michael