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

如何在Kivy中实现延迟操作 解决Clock.schedule_once调用报错问题

报错原因

  • Clock.schedule_once 方法的第一个入参要求是可调用的回调函数,第二个入参才是延迟执行的秒数,你错误地将延迟值2作为第一个参数传入,触发了参数类型校验失败的报错。
  • 原代码的执行逻辑是同步的,即便参数书写正确,self.ids.scoring.text = '0-0' 也会在设置获胜提示后立刻执行,不会等待延迟时间。

修复方案

方案1:使用匿名函数lambda实现简单逻辑(适合单行重置操作)

import kivy
from kivy.clock import Clock

if int(value) > int(value2):
    self.ids.scoring.text = 'blue wins'
    # dt为Clock自动传给回调的时间差参数,无实际使用需求也需要占位
    Clock.schedule_once(lambda dt: setattr(self.ids.scoring, 'text', '0-0'), 2)

方案2:封装独立重置函数(适合重置逻辑复杂的场景)

import kivy
from kivy.clock import Clock

# 单独封装重置计分板的方法
def reset_scoreboard(self, dt):
    self.ids.scoring.text = '0-0'
    # 其他需要同步执行的重置逻辑可以写在这里

if int(value) > int(value2):
    self.ids.scoring.text = 'blue wins'
    Clock.schedule_once(self.reset_scoreboard, 2)

内容的提问来源于stack exchange,提问作者Programmer-123

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 09:30:03