如何在python中使用turtle模块循环颜色?

时间:2019-02-10 12:45:55

标签: python colors turtle-graphics

我正在尝试绘制一条彩虹直线,但无法弄清楚turtle.pencolor()中RGB值随时间变化的方式...

我尝试使用从000000FFFFFF的十六进制增量,但是在得到无效的颜色值之前,我遇到了黑色到绿色的线循环。

2 个答案:

答案 0 :(得分:1)

我的猜测是,Python海龟基于RGB的颜色是错误的模型,无法轻松生成彩虹线。幸运的是,您可以import colorsys使用更合适的模型,例如HSV,并将其转换为RGB:

from turtle import Screen, Turtle
from colorsys import hsv_to_rgb

RADIUS = 300
WIDTH = 100

screen = Screen()

turtle = Turtle(visible=False)
turtle.speed('fastest')  # because I have no patience
turtle.width(WIDTH)

turtle.penup()
turtle.sety(-RADIUS)
turtle.pendown()

for angle in range(360):
    turtle.pencolor(hsv_to_rgb(angle / 360, 0.75, 0.75))
    turtle.circle(RADIUS, 1)

screen.exitonclick()

在这里,我们只是基于角度调整色调,并保持饱和度 value 不变:

enter image description here

答案 1 :(得分:0)

另外,如果你更没有耐心,你可以将海龟模块的“tracer”函数设置为(0, 0)

例如。 t.tracer(0, 0)

这将使绘图立即出现。

t.tracer(20, 0) 将使海龟超速但仍然有一些动画

如果使用此方法,最后还需要 t.update()