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
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.