数字增加时如何更改颜色?

时间:2019-06-12 13:58:28

标签: python python-3.x

我正在制作一个显示值从1到50的应用程序,并且我想像彩虹一样更改颜色,所以如果值是1,则颜色=蓝色,如果值= 50,则颜色是红色。

我已经尝试过了,只有这样不会改变彩虹的颜色:

for i in range(value):
    x += 40
    color = (x,255,255)

1 个答案:

答案 0 :(得分:2)

这更多是关于颜色如何工作的问题。您会注意到它是一个三元组:

color = (red, green, blue)

计算机颜色通常在additive color mixing下起作用。如果根本没有颜色,则您会变黑。如果您具有红色,绿色和蓝色的最大值,则会得到白色。如果您想从红色变成蓝色,然后变成紫色,则可以执行以下操作:

color = (255-x, 0, x)

如果您想再次跨越彩虹从红色过渡到黄色,橙色,绿色,蓝色,紫色和红色,您想要的不是RGB颜色空间,而是HSV(色调) ,饱和度,值)。我假设您使用的用于输出颜色的任何颜色都必须为RGB,但即使如此,Python provides a module for converting between the two

import colorsys
...
color = colorsys.hsv_to_rgb((x / 255), 1, 1)

请注意,colorsys中的函数仅采用0到1之间的值,因此,如果要以255为单位,则必须在获得矢量后将其乘以255:

color = (255 * c for c in colorsys.hsv_to_rgb(x/255, 1, 1))