我们说我有一个带有id' btn_toggle'的ToggleButton。如果我从代码中执行此操作:
self.ids['btn_toggle'].dispatch('on_press')
然后触发on_press事件,并调用绑定的事件处理程序。一切都很好,除了根本没有切换按钮。切换按钮组未更新。这是一个错误,还是我应该为此使用不同的事件?
答案 0 :(得分:1)
按钮的on_press
事件和state
属性的关联程度低于您的想法,实际上,它们可以相互独立地更改/触发。
如果您想更改按钮的状态,只需执行self.ids.btn_toggle.state = 'down'
,但它不会自动创建on_press
事件(由点击直接触发),所以,如果这就是你想要的,你仍然需要这样做。
基本上,在ToggleButton
中,on_press
表示用户点击了按钮,如果按钮已经关闭,则无法更改其状态,直到用户释放触摸(然后你会收到一个on_release
事件以及一个on_state
事件),如果该按钮未关闭,则会同时收到on_press
和on_state
个事件,并且当用户释放触摸时,您将获得on_release
事件。
如果您感兴趣的是按钮的状态,而不是触摸按钮,那么您可能实际上想要对on_state
而不是on_press
作出反应。