Veelgemaakte fouten
Een overzicht van de meest voorkomende foutmeldingen en hoe je ze oplost.
AttributeError: has no attribute
AttributeError: 'Circle' object has no attribute 'colr'. Did you mean: 'color'?
Oorzaak: Je hebt een attribuutnaam verkeerd getypt.
Oplossing: Controleer de spelling. Veelvoorkomende tikfouten:
colour→color(Engelse spelling zonder u)widht→widthhight→height
FileNotFoundError
FileNotFoundError: [Errno 2] No such file or directory: 'plaatje.png'
Oorzaak: Het bestand dat je probeert te laden bestaat niet, of staat op de verkeerde plek.
Oplossing: Zorg dat het afbeeldingsbestand in dezelfde map staat als je Python-bestand. Controleer ook of de bestandsnaam precies klopt (hoofdletters tellen mee!).
UnboundLocalError: local variable referenced before assignment
UnboundLocalError: local variable 'score' referenced before assignment
Oorzaak: Je probeert een variabele aan te passen in een functie, maar Python denkt dat het een nieuwe lokale variabele is.
Oplossing: Voeg global toe bovenaan de functie:
@play.when_key_pressed("space")
def punt():
global score
score = score + 1
Meer uitleg: 6.1 Een score bijhouden
SyntaxError: invalid syntax (bij if-statements)
SyntaxError: invalid syntax
Oorzaak: Je gebruikt = (toewijzen) in plaats van == (vergelijken) in een if-statement.
# FOUT
if score = 10:
# GOED
if score == 10:
SyntaxError: 'await' outside function
SyntaxError: 'await' outside function
Oorzaak: Je gebruikt await in een functie die niet async is.
# FOUT
@play.when_mouse_clicked
def klik():
await play.timer(seconds=1)
# GOED
@play.when_mouse_clicked
async def klik():
await play.timer(seconds=1)
Meer uitleg: 5.2 Wachten met async en await
TypeError: can only concatenate str to str
TypeError: can only concatenate str (not "int") to str
Oorzaak: Je probeert een getal met tekst samen te voegen met +.
# FOUT
tekst.words = "Score: " + score
# GOED
tekst.words = "Score: " + str(score)
Met str() maak je van een getal een stukje tekst.
pygame.error: video system not initialized
pygame.error: video system not initialized
Oorzaak: Je bent pygame.init() vergeten in een pygame-ce programma.
Oplossing: Zorg dat pygame.init() altijd de eerste regel is na import pygame.
Het scherm bevriest
Oorzaak: Je gebruikt time.sleep() in een play-programma. Dit blokkeert het hele spel.
Oplossing: Gebruik in plaats daarvan async en await:
@play.when_mouse_clicked
async def klik():
await play.timer(seconds=1)
Meer uitleg: 5.1 Wachten in je spel
None op het scherm
Oorzaak: Je haalt een waarde op uit de database die nog niet bestaat, zonder een default waarde.
# Geeft None als 'punten' niet bestaat
mijn_punten = database.get_data('punten')
# Geeft 0 als 'punten' niet bestaat
mijn_punten = database.get_data('punten', 0)
Meer uitleg: 7.1 Gegevens opslaan en ophalen