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

Pygame中每5秒创建Obstacle类实例报错:obstacle is not callable

解决Pygame中每5秒创建Obstacle实例的"obstacle is not callable"错误

错误原因

你当前的代码Timer(5, Obstacle(self,j,i)).start()会立即执行Obstacle(self,j,i)创建实例,然后把这个实例对象传给Timer的第二个参数。但Timer要求第二个参数是一个可调用对象(比如函数、lambda),而不是已经创建好的实例,这就导致了"obstacle is not callable"错误。

解决方案

方案1:用lambda包装实例化操作

使用lambda表达式把Obstacle的实例化逻辑包装成可调用对象,Timer触发时才会执行实例化:

Timer(5, lambda: Obstacle(self, j, i)).start()

方案2:定义专门的创建函数

如果逻辑更复杂,建议单独写一个函数来处理实例化,再把函数传给Timer:

def spawn_obstacle():
    Obstacle(self, j, i)

Timer(5, spawn_obstacle).start()

实现持续每隔5秒创建

如果需要重复每隔5秒创建(而不是只创建一次),需要在每次触发后重新启动Timer:

def spawn_obstacle():
    Obstacle(self, j, i)
    # 重新启动Timer,实现循环触发
    Timer(5, spawn_obstacle).start()

# 首次启动Timer
Timer(5, spawn_obstacle).start()

额外注意事项

  • 确保你的game类中已经正确初始化了Obstacle精灵组:
    # 在Game类的__init__中添加
    self.Obstacle = py.sprite.Group()
    
  • 检查tilesize、speed1、car_layer、green这些全局变量是否已经正确定义,避免实例化时出现其他错误。

内容的提问来源于stack exchange,提问作者qleqs

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 03:25:19