2017-12-28 10 views
1

Ich versuche, ein Menü für ein kleines Programm zu erstellen, das this image anzeigt. Ich verwende this tutorial. Mein Code sieht wie folgt aus:Die maximale Rekursionstiefe wurde überschritten, als versucht wurde, das Objekt anzuzeigen

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() 

Allerdings habe ich immer einen Laufzeitfehler erhalten: RecursionError: maximale Rekursionstiefe überschritten. Diese sind in den Zeilen 19 (3 ​​mal) und 29 (einmal). Ich frage mich, was genau ich falsch mache, da ich das Tutorial genau befolgt habe.

+2

Sie können den Namen 'flask' ​​nicht sowohl für das Bild als auch für die Funktion zum Anzeigen des Bildes verwenden. – jasonharper

Antwort

1

Das passiert, weil die flask Funktion sich selbst innerhalb ihres Funktionskörpers immer wieder aufruft, bis die maximale Rekursionstiefe von 1000 Rekursionen (Standardwert) überschritten wird.

Geben Sie dem Bild einen anderen Namen und blit es dann in der flask Funktion.

# 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)) 
+1

Danke, ich habe auch vergessen, ein Komma in das Fenster zu legen. –

Verwandte Themen