如何在Tkinter中制作颜色选择比例?

时间:2015-06-06 23:40:02

标签: python tkinter color-picker ttk

我正在尝试为Tkinter应用程序创建颜色选择比例。

我对tkinter.colorchooser模块或每个RGB通道的不同比例不感兴趣。我需要像Photoshop中的颜色滑块一样的单一比例。

我目前拥有的是一个垂直缩放小部件,其RGB整数值从0#000)到16777215#FFF)。问题是使用一系列RGB整数会产生非常奇怪的颜色序列 - 选择不会从红色变为粉红色到蓝色等,如下面的第一张图片所示。

相反,我得到了第二张图片中的颜色序列。它被大量压缩,因为有16777215种不同颜色被挤压成300像素。第三张照片是变焦。你可以看到它从黑色到绿色,然后几乎是黑色到绿色等等。

Color slider in Photoshop
Gradient based on RGB integers
Closer look at the gradient

这是我的代码的相关部分:

MAXRGBINT = 16777215  # Corresponds to (255, 255, 255)
scale = ttk.Scale(slidframe, orient=VERTICAL, length=75,
                  from_=0, to=MAXRGBINT,
                  command=lambda _: set_color('sprite'))

基本上我想要一个按照“正常”顺序浏览颜色的缩放小部件。我怎么能用数值来做这个?

2 个答案:

答案 0 :(得分:3)

您的问题是您正在使用一维比例来表示三维色彩空间。

对于您正在寻找的内容,我建议您使用HSL or HSV颜色空间,并使用有问题的比例来操纵Hue参数。当您执行需要RGB值时,您可以通过HSL / HSV值的转换获取它们(我链接的维基百科页面解释了如何)。

答案 1 :(得分:1)

您可以使用matplotlib的预制色图(jet,rainbow等)from matplotlib import cm或创建自己的色块,然后浏览rgb值。您可以使用标准值通常以256个值(last paragraph)分隔的事实。如果这对你来说已经足够了,后者可能是最简单的。

这就是你问的问题吗?