Kivy:检查功能是否已安排

Kivy: Check if a function is already scheduled

有没有办法检查是否已经安排了一个功能?我正在查看 Clock 方法,但没有看到任何我可以使用的方法。我试图避免函数的重新安排(Clock.unschedule(func) -> Clock.schedule_interval(func, dt)),除非它已经安排好开始。

您可以使用 kivy.clock.Clock.get_events() 获取已安排的事件列表:

from kivy.app import App
from kivy.uix.boxlayout import BoxLayout

from kivy.lang import Builder

Builder.load_string("""
#:import Clock kivy.clock.Clock

<MyWidget>:
    Button:
        text: "Print events"
        on_press: print(Clock.get_events())
    Button:
        text: "Add event"
        on_press: Clock.schedule_once(root.my_callback, 5)
""")

class MyWidget(BoxLayout):
    def my_callback(self, arg):
        print("my_callback")

class MyApp(App):
    def build(self):
        return MyWidget()

if __name__ == '__main__':
    MyApp().run()

旧答案

不是很干净的方法,但您可以检查 kivy.clock.Clock._events 列表的内容。