我在这里有这个简单的代码:一个CheckBox
和一个Widget
,我想添加复选框。
当应用程序启动时,我想从字典或从。json文件更新CheckBox.state
。这里我直接输入'down'
。主要问题是,当我将状态从'normal'
更新到'down'
时,它调用方法on_action:
,这里我有一些函数,我想在我按下复选框时调用。
我如何初始化CheckBox.state
(从字典或。json文件->我知道怎么做,而不需要调用执行我的函数的on_action
。
class AddCheckBox(Widget):
def __init__(self, **kwargs):
super(AddCheckBox, self).__init__(**kwargs)
check_box = ChBox()
check_box.update_state = 'down'
self.add_widget(check_box)
class ChBox(CheckBox):
update_state = StringProperty('normal')
def some_function(self):
print("Function is called")
AddCheckBox:
<AddCheckBox>:
<ChBox>:
state: root.update_state
on_active: root.some_function()
您可以通过定义一个Property
ignore_state_change
来实现这一点,就像这样:
class ChBox(CheckBox):
update_state = StringProperty('normal')
ignore_state_change = BooleanProperty(True)
def some_function(self):
if self.ignore_state_change:
return
print("Function is called")
def on_parent(self, *args):
self.ignore_state_change = False
on_parent()
方法将ignore_state_change
更改为不忽略之后的任何状态变化。