Python Kivy应用中Clock调度function12函数失败求助
问题解决
你的代码无法触发function12的核心原因是**time.sleep(100)阻塞了Kivy的主事件循环**。
Kivy的Clock调度机制依赖主循环持续处理事件,而time.sleep()会让整个程序线程暂停执行,主循环无法继续运转,导致所有后续调度的任务都无法触发。
另外还有一个细节:Clock.schedule_once调度的回调函数默认会接收一个dt参数(代表实际延迟的时间),你的function12没有定义这个参数,即使主循环不阻塞,运行时也会报错。
修改后的代码如下:
import os os.environ["KIVY_NO_CONSOLELOG"] = "1" from kivy.app import App from kivy.clock import Clock class MainApp(App): def on_start(self): print("Here") Clock.schedule_once(self.function12, 5) print("Here") # 若需要延迟执行逻辑,用Clock替代time.sleep Clock.schedule_once(self.delayed_operation, 100) def function12(self, dt): print("INSIDE") def delayed_operation(self, dt): # 原time.sleep(100)对应的逻辑写在这里 pass if __name__ == "__main__": MainApp().run()
关键修改点:
- 移除
time.sleep(100),改用Clock.schedule_once调度延迟任务 - 给
function12添加dt参数,匹配Clock的回调要求
内容的提问来源于stack exchange,提问作者ejn
相关产品推荐
相关产品推荐

