P
phil
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
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