尝试显示对象时超出了最大递归深度

时间:2017-12-28 00:18:53

标签: python-3.x recursion pygame

我要为小程序创建一个菜单,显示this image。我正在使用this tutorial。我的代码如下所示:

import pygame

pygame.init()

height = 1366 #The height and width of our window
width = 769

window = pygame.display.set_mode((height,width)) 
pygame.display.set_caption("Score")

white = (255,255,255) #This block defines all the colors in (R,G,B) format

clock = pygame.time.Clock()
crashed = False

flask = pygame.image.load('flask.jpg') #This block is for loading all images

def flask(x_f,y_f):
    window.blit(flask(x_f,y_f))
x_f = (width * 0.45)
y_f = (height * 0.8)

while not crashed:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            crashed = True

    window.fill(white)
    flask(x_f,y_f)

    pygame.display.update()
    clock.tick(60)

pygame.quit()
quit()

但是,我一直收到运行时错误:RecursionError:超出了最大递归深度。这些是第19行(3次)和29次(一次)。我一直在想我到底做错了什么,因为我一直在密切关注这个教程。

1 个答案:

答案 0 :(得分:1)

这是因为flask函数一次又一次地调用其函数体内部,直到超过1000次递归的最大递归深度(默认值)。

为图像指定一个不同的名称,然后在flask函数中将其blit。

# Use the `convert` method to improve the performance.
flask_image = pygame.image.load('flask.jpg').convert()

def flask(x_f, y_f):
    window.blit(flask_image, (x_f, y_f))