2017-11-24 6 views
1

Ich habe ein Kontrollkästchen in meiner .kv-Datei, und ich möchte eine Texteingabe deaktivieren, die damit verbunden ist, wenn das Kontrollkästchen nicht aktiviert ist.Python (Kivy) - Check Wert von Checkbox von. Kv in Python

Mein Py-Code

if self.ids.checkbox.active==False: 
    self.ids.input.disabled==True 
else: 
    self.ids.input.disabled==False 

Mein .kv-Code

TextInput: 
     id: input 
     text: "2fbd3320a168d5c2e35" 
     pos_hint: {"x":0.1, "y":0.4} 
     size_hint: 0.5,0.05 
     background_disabled_normal: "" 

    CheckBox: 
     id: checkbox 
     pos_hint: {"x":0.6, "y":0.4} 
     size_hint: 0.05,0.05 

Ich weiß nicht, wie dies zu tun gehen, der Py-Code in einer Funktion sein muss, aber Kontrollkästchen tun das Attribut on_release nicht beherbergen.

Antwort

1

Sie müssen das Ereignis (checkbox.active) mit dem entsprechenden Rückruf verknüpfen. Sie können es in der Py-Datei tun mit bind:

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

Eine weitere Option ist es in der .kv zu tun, Datei:

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

+0

youre das beste;) – Michael

Verwandte Themen