2015-11-08 2 views
0

Я хочу, чтобы инициализировать значение CheckBox в kivy из кода питонаКак я инициализирует состояние CheckBox в kivy

Я попытался (пример), но он не работает. Кто-нибудь может помочь?

import kivy 
from kivy.app import App 
from kivy.uix.boxlayout import BoxLayout 
from kivy.properties import BooleanProperty 
from kivy.properties import StringProperty 

class MainScreen(BoxLayout): 
    BlueText = StringProperty() 
    Blue = BooleanProperty() 
    Red = BooleanProperty() 
    UseColours = BooleanProperty() 

    def __init__(self, **kwargs): 
    super(MainScreen, self).__init__(**kwargs) 
    self.BlueText='Blue' 
    self.UseColours=True 
    self.Blue=False 
    self.Red=True 

    def doBlue(self,*args): 
    pass 

    def doRed(self,*args): 
    pass 

    def doUseColours(self,*args): 
    pass 

class BasicApp(App): 
    def build(self): 
     return MainScreen() 

if __name__ == '__main__': 
    BasicApp().run() 

Мой файл kv пытается определить, проверяются ли флажки, устанавливая «значение». Это правильно?

MainScreen: 

<MainScreen>: 
    orientation: "vertical" 
    GridLayout: 
     cols: 2 
     Label: 
      text: root.BlueText 
     CheckBox: 
      group: 'colours' 
      value: root.Blue 
      on_active: root.doBlue(*args) 
     Label: 
      text: "Red" 
     CheckBox: 
      group: 'colours' 
      value: root.Red 
      on_active: root.doRed(*args) 
     Label: 
      text: "Use colours" 
     CheckBox: 
      value: root.UseColours 
      on_active: root.doUseColours(*args) 

ответ

0

Использование active свойство:

from kivy.app import App 
from kivy.uix.boxlayout import BoxLayout 
from kivy.lang import Builder 

Builder.load_string(''' 
<MyWidget>: 
    CheckBox: 
     active: False 
    CheckBox: 
     active: True 
''') 

class MyWidget(BoxLayout): 
    pass 

class MyApp(App): 
    def build(self): 
     return MyWidget() 

if __name__ == '__main__': 
    MyApp().run() 

Из кода Python:

from kivy.app import App 
from kivy.uix.boxlayout import BoxLayout 
from kivy.properties import BooleanProperty 
from kivy.lang import Builder 

Builder.load_string(''' 
<MyWidget>: 
    CheckBox: 
     active: root.is_active 
    CheckBox: 
     active: not root.is_active 
    Button: 
     text: 'toggle' 
     on_press: root.toggle() 
''') 

class MyWidget(BoxLayout): 
    is_active = BooleanProperty(False) 

    def toggle(self): 
     self.is_active = not self.is_active 

class MyApp(App): 
    def build(self): 
     return MyWidget() 

if __name__ == '__main__': 
    MyApp().run() 
+0

Благодаря Nykakin. Я просмотрел документацию и не нашел этого. Где я должен был посмотреть? – Psionman

+0

Он находится здесь: http://kivy.org/docs/api-kivy.uix.checkbox.html#kivy.uix.checkbox.CheckBox.active – Nykakin

+0

Спасибо. Да, я бы это прочитал, но запутался для включения :( – Psionman

Смежные вопросы