如何让kivy复选框传递它的状态
问题描述
Main.py
def if_active(self, state):
If state is true:
print "True"
else:
print "False"
main.kv
CheckBox
on_state: root.if_active(self.state)
Ignoring all the classes and .run() and that stuff, It should be obvious what I'm trying to do here What am I doing wrong?
解决方案The solution is as follow. Please refer to the example below for details.
Snippets
main.kv
CheckBox:
on_active: root.if_active(self.active)
main.py
def if_active(self, state):
if state:
print "True"
else:
print "False"
Example
main.py
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.core.window import Window
class CheckBoxDemo(BoxLayout):
def on_checkbox_active(self, value):
if value:
print("The checkbox is active because value={}".format(value))
else:
print("The checkbox is inactive because value={}".format(value))
def on_radiobutton_active(self, value):
if value:
print("The radiobutton is active because value={}".format(value))
else:
print("The radiobutton is inactive because value={}".format(value))
class TestApp(App):
Window.size = (360, 360)
title = "Kivy Checkbox & RadioButton Demo"
def build(self):
return CheckBoxDemo()
if __name__ == "__main__":
TestApp().run()
test.kv
#:kivy 1.10.0
<CheckBoxDemo>:
orientation: "vertical"
Label:
size_hint: 1, 0.2
text: "Checkbox"
GridLayout:
cols: 2
CheckBox:
on_active: root.on_checkbox_active(self.active)
CheckBox:
CheckBox:
group: "radiobutton1"
on_active: root.on_radiobutton_active(self.active)
CheckBox:
group: "radiobutton1"
on_active: root.on_radiobutton_active(self.active)
CheckBox:
group: "radiobutton2"
CheckBox:
group: "radiobutton2"
Output
相关文章