Why do I keep getting this error message python

Can anyone tell me why I keep getting this error? I thought I defined ‘canvas’ at the bottom. Thank you for any help.

from tkinter import *
import random
import time

class Ball:
    def __init__(self, canvas, color):
        self.canvas = canvas
        self.id = canvas.create_oval(10, 10, 25, 25, fill=color)
        self.canvas.move(self.id, 245, 100)
def draw(self):
    pass

ball = Ball(canvas, 'red')
while 1:
    tk.update_idletasks()
    tk.update()
    time.sleep(0.01)

tk = Tk()
tk.title("Game")
tk.resizeable(0, 0)
tk.wm_attributes("-topmost", 1)
canvas = Canvas(tk, width=500, height=500, bd=0, highlightthickness=0)
canvas.pack()
tk.update()

Traceback (most recent call last):
File “C:/Users/Mahgee/AppData/Local/Programs/Python/Python39-32/paddleball.py”, line 13, in
ball = Ball(canvas, ‘red’)
NameError: name ‘canvas’ is not defined

You are actually trying to use canvas on line 13, before defining it:

3 Likes

Can you show me how you would fix it? I tried moving it to after it was defined, but then got a bunch of other errors.

Exactly what errors are you getting? It’s been a while since I last used tkinter, and I believe this is not from a Codecademy lesson (?) so I’m a bit lost

Oh btw, you might want to check the indentation of your draw method. It might be what’s actually causing trouble.