Using Tkinter Canvas to teach High School Geometry
with A LOT of success.

My drawing gets very slow after a lot of actions.

For instance I have created code to rotate a set of objects
about a rotation point.
rotate 360 degrees starts to get slow
after 720 degrees its crawling.

I checked the item list with with find_all: IT GROWS!

OK, I create 3 lines using a line Class I created.
When I rotate these 3 lines thru 360 degrees it creates
360 lines times 3. But each new instance of line REPLACES
the old instance.  The line class has a destructor to delete
the drawn object.

class line:
        count = 0
        def __init__(s,glob,argl,color=''):
            line.count = line.count + 1
            ##
            ## buncha code here
            ##
            s.obj = glob.can.create_line(x0,y0,x1,y1,
                                        width=glob.width,fill=s.color)
        def __del__(s):
            line.count = line.count - 1
        
            ## delete the line object if the
            ## class instance is deleted
            s.glob.can.delete(s.obj)


After the rotation I check line.count and it is 3 But find_all returns a tuple ofover 1000 items. The drawn objects are not being deleted. Which is kinda weird because the rotation works. That is they appear to be deleted.

Is find_all() fooling me?
Is this the reason drawing slows down? Is it refreshing
invisible objects?

This slowing down also occurs when I draw a lot of objects.
Lets say I draw a sine wave, say 1000 individual points.
If I draw 4 or 5 sine waves it gets really slow.

I should mention I call update() after each drawing action.
This is necessary for the students to watch the progress.
I might be drawing objects in a lengthy loop and without
update() they only appear at the end of the loop.

Thanks for any help.

-- Confused


-- http://mail.python.org/mailman/listinfo/python-list

Reply via email to