Pygame调用draw_window()报错:缺少yellow和red位置参数
解决Pygame中draw_window()的参数缺失错误
错误原因
你遇到的TypeError: draw_window() missing 2 required positional arguments: 'yellow' and 'red',核心问题是调用draw_window()时没有传入它声明的两个必填参数,同时当前draw_window函数里虽然定义了yellow和red参数,但并没有实际使用它们,而是硬编码了固定坐标。
修正步骤
- 在
main()函数中添加draw_window(yellow, red)的调用,传入创建好的两个Rect对象 - 优化
draw_window(),利用传入的Rect对象的坐标来绘制飞船,代替固定数值,这样后续移动飞船时无需修改绘制代码
修正后的完整代码示例:
def draw_window(yellow, red): WIN.fill(BACKGROUND) # 使用Rect对象的坐标来绘制,而不是固定值 WIN.blit(YELLOW_SPACESHIP, (yellow.x, yellow.y)) WIN.blit(RED_SPACESHIP, (red.x, red.y)) pygame.display.update() def main(): yellow = pygame.Rect(700, 300, SPACESHIP_WIDTH, SPACESHIP_HEIGHT) red = pygame.Rect(100, 300, SPACESHIP_WIDTH, SPACESHIP_HEIGHT) # 游戏主循环(避免窗口一闪而过) run = True while run: for event in pygame.event.get(): if event.type == pygame.QUIT: run = False # 调用draw_window并传入参数 draw_window(yellow, red) pygame.quit()
额外说明
- 必须添加游戏主循环,否则程序会创建窗口后立刻退出,无法看到绘制效果
- 后续实现飞船移动时,只需修改
yellow和red这两个Rect对象的x/y属性,绘制逻辑会自动同步更新
内容的提问来源于stack exchange,提问作者RSMP
相关产品推荐
相关产品推荐

