classification
Title: Turtle Circle Speed 0
Type: behavior Stage: needs patch
Components: Library (Lib) Versions: Python 3.4, Python 3.5
process
Status: open Resolution:
Dependencies: Superseder:
Assigned To: Nosy List: Garrett.Grimsley, gregorlingl, ingrid, willingc
Priority: normal Keywords:

Created on 2014-03-27 16:16 by Garrett.Grimsley, last changed 2018-06-16 15:14 by willingc.

Files
File name Uploaded Description Edit
aoeu.py Garrett.Grimsley, 2014-03-27 16:16 Source code that reproduces bug
update_example.py ingrid, 2014-09-17 18:27
Messages (3)
msg214963 - (view) Author: Garrett Grimsley (Garrett.Grimsley) Date: 2014-03-27 16:16
A circle is supposed to draw upon a click event, but if speed is set to 0 it appears that the circle fails to draw and all existing lines are erased.

A screenshot of the behavior with radius = 20 can be seen here: http://i.imgur.com/y7z87AN.png This state can be replicated by completing an entire game worth of clicks.



Someone replying to my StackOverflow question noted that if the radius of the circle is increased (radius = 200 for example) it becomes apparent that the circle  is actually drawing, but the existing lines are still erased. 

A screenshot of the behavior with radius = 200 can be seen here: http://i.imgur.com/gYeOlnT.png This state can be replicated by clicking bottom middle, middle middle, then bottom right, in that order.


You will note that only lines on the clickable Tic-Tac-Toe board are erased, and lines outside of it remain intact.


Load my code and click the Tic-Tac-Toe board to reproduce the bug. Please use my exact code, as you WILL fail to reproduce the bug by simply importing turtle and drawing a circle. To change the circle radius in my code locate the radius variable assignment in the draw_circle() function. It is located on line 77 of the code.


Source code in file is also available here: http://bpaste.net/show/189364/
Relevant StackExchange overflow link: http://stackoverflow.com/questions/22432679/turtle-circle-makes-lines-disappear/22445757
msg227014 - (view) Author: (ingrid) * Date: 2014-09-17 18:27
This seems to be caused by a bug in TurtleScreen.update/turtle._drawturtle. When the speed is set to zero, the tracer method is used to regulate drawing circles, and when called with a positive integer, tracer calls update. Update iterates over the list of existing turtle objects and then updates them and calls _drawturtle on them, then redraws them, but doesn't draw lines or stamps so they'll get drawn over by shapes and images. I attached a snippet that shows the bug happening when you call update directly, if you switch the last line and use tracer instead the same thing happens. I think the way to fix it is to add stamps and lines to _drawturtle so I'm going to work on a patch that uses that approach.
msg319749 - (view) Author: Carol Willing (willingc) * (Python committer) Date: 2018-06-16 15:14
The next step on this issue would be to test if this behavior is still present in Python 3.6 and 3.7 and report the result of your test here.
History
Date User Action Args
2018-06-16 15:14:42willingcsetnosy: + willingc
messages: + msg319749
2014-09-17 18:27:17ingridsetfiles: + update_example.py
nosy: + ingrid
messages: + msg227014

2014-05-26 10:24:07ezio.melottisettype: behavior
stage: needs patch
2014-03-29 07:47:38terry.reedysetversions: + Python 3.4, Python 3.5, - Python 3.3
2014-03-27 16:16:30Garrett.Grimsleycreate