kivy ToggleButton dispatch不切换

时间:2017-10-07 10:00:20

标签: kivy

我们说我有一个带有id' btn_toggle'的ToggleButton。如果我从代码中执行此操作:

self.ids['btn_toggle'].dispatch('on_press')

然后触发on_press事件,并调用绑定的事件处理程序。一切都很好,除了根本没有切换按钮。切换按钮组未更新。这是一个错误,还是我应该为此使用不同的事件?

1 个答案:

答案 0 :(得分:1)

按钮的on_press事件和state属性的关联程度低于您的想法,实际上,它们可以相互独立地更改/触发。

如果您想更改按钮的状态,只需执行self.ids.btn_toggle.state = 'down',但它不会自动创建on_press事件(由点击直接触发),所以,如果这就是你想要的,你仍然需要这样做。

基本上,在ToggleButton中,on_press表示用户点击了按钮,如果按钮已经关闭,则无法更改其状态,直到用户释放触摸(然后你会收到一个on_release事件以及一个on_state事件),如果该按钮未关闭,则会同时收到on_presson_state个事件,并且当用户释放触摸时,您将获得on_release事件。

如果您感兴趣的是按钮的状态,而不是触摸按钮,那么您可能实际上想要对on_state而不是on_press作出反应。