Kivy:在不调用'on_active'方法的情况下更新复选框状态



我在这里有这个简单的代码:一个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()

您可以通过定义一个Propertyignore_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更改为不忽略之后的任何状态变化。

相关内容

  • 没有找到相关文章

最新更新