You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 16:51:35