Ga naar hoofdinhoud

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:

  • colourcolor (Engelse spelling zonder u)
  • widhtwidth
  • hightheight

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