Вы пропустили звонок на s.mainloop()
. И если вы хотите, чтобы n
изменялся при каждом щелчке, объявите его как глобальный в функции square()
и увеличивайте его после завершения рисования. Не забудьте сбросить n
на ноль, если он становится больше len(colors)
.
Звонок на s.onscreenclick()
говорит черепахе «как обрабатывать щелчок» (в данном случае вызывая square()
), поэтому вам не нужно помещать в оператор if
.
import turtle
t= turtle.Turtle()
s=turtle.Screen()
colors = ["red","orange","yellow","green","blue","indigo","purple"]
n=0
def square(x,y): # draw a square at (x,y)
global n # use the global variable n
t.penup()
t.goto(x,y)
t.pendown()
t.color(colors[n])
t.begin_fill()
for i in range(4):
t.fd(90)
t.lt(90)
t.end_fill()
t.penup()
n = (n+1) % len(colors) # change the colour after each square
s.onscreenclick(square) # whenever there's a click, call square()
s.mainloop() # start looping
Наконец, обязательно прочитайте это , так как вы впервые в StackOverflow.