How to speed up python's 'turtle' function and stop it freezing at the end

clickonMe picture clickonMe · Apr 20, 2013 · Viewed 79.4k times · Source

I have written a turtle program in python, but there are two problems.

  1. It goes way too slow for larger numbers, I was wonder how I can speed up turtle.
  2. It freezes after it finishes and when clicked on, says 'not responding'

This is my code so far:

import turtle

#Takes user input to decide how many squares are needed
f=int(input("How many squares do you want?"))
c=int(input("What colour would you like? red = 1, blue = 2 and green =3"))
n=int(input("What background colour would you like? red = 1, blue = 2 and green =3"))

i=1

x=65

#Draws the desired number of squares.
while i < f:
    i=i+1
    x=x*1.05
    print ("minimise this window ASAP")
    if c==1:
        turtle.pencolor("red")
    elif c==2:
        turtle.pencolor("blue")
    elif c==3:
        turtle.pencolor("green")
    else:
        turtle.pencolor("black")
    if n==1:
        turtle.fillcolor("red")
    elif n==2:
        turtle.fillcolor("blue")
    elif n==3:
        turtle.fillcolor("green")
    else:
        turtle.fillcolor("white")
    turtle.bk(x)
    turtle.rt(90)
    turtle.bk(x)
    turtle.rt(90)
    turtle.bk(x)
    turtle.rt(90)
    turtle.bk(x)
    turtle.rt(90)
    turtle.up()
    turtle.rt(9)
    turtle.down()

By the way: I am on version 3.2!

Answer

kalgasnik picture kalgasnik · Apr 20, 2013
  1. Set turtle.speed() to fastest.
  2. Use the turtle.mainloop() functionality to do work without screen refreshes.
  3. Disable screen refreshing with turtle.tracer(0, 0) then at the end do turtle.update()