Kivy-需要针对使用Clock.schedule_once

时间:2019-07-18 02:48:42

标签: python event-handling kivy

我开始学习kivy,只是在阅读有关事件的文档,但是我无法理解其中的一部分。

背景

文档说X秒钟后使用Clock.schedule_once(callback,X)执行callback。但是,如果X为0,它将在下一帧之后执行callback

我的困惑

现在文档遵循say

  

有时您可能希望将某个函数安排为下一帧仅被调用一次,以防止重复调用。

建议执行以下操作-

# First, schedule once.
event = Clock.schedule_once(my_callback, 0)

# Then, in another place you will have to unschedule first
# to avoid duplicate call. Then you can schedule again.
Clock.unschedule(event)
event = Clock.schedule_once(my_callback, 0)

但是使用触发器-

trigger = Clock.create_trigger(my_callback)
# later
trigger()
  

每次调用trigger()时,都会安排一次回调调用。如果已经安排好了,则不会重新安排。

我的困惑是为什么第一种方法不起作用?方法schedule_once()是否只执行一次回调?为什么在第一种方法中有重复的可能性?

1 个答案:

答案 0 :(得分:1)

文档不是说第一种方法行不通,只是说它很昂贵。是的,调用schedule_once将只执行一次回调,但是调用两次将执行两次。他们的示例说,您的代码中可能有两个位置,您希望安排同一事件,但只希望执行一次。触发器仅执行第一种方法的等效操作,但开销较小。

相关问题