2015-11-08 62 views
0

复选框状态我想从Python代码我如何初始化在kivy

我试图初始化在kivy CheckBox的值(见例),但它不工作。任何人都可以帮忙吗?

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文件试图通过设置'value'来检查框是否被检查。这是正确的吗?

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