2017-09-30 34 views
1

PyQt有一个完整的类(QtGui.QColor)用于处理多种格式的颜色。该类包含一个setNamedColor()方法,该方法接收由万维网联盟提供的SVG color keyword names定义的指定颜色,并将颜色作为RGB值返回。python - 如何获得PyQt中的命名颜色?

所以,给出的(伪)代码:

my_color = QtGui.QColor() 
my_color.setNamedColor("red") 

一个得到类似 “#0000FF”

但我想恰恰是相反的:一个 “getNamedColor()” 函数,根据上面提到的SVG颜色关键字名称,给定值RGB值将返回颜色的名称。

一个满意的解决方案是使用Matplotlib颜色表(见here)在一个方便的功能,这样的:

import matplotlib.colors as colors 
def get_named_color(hex): 
    return colors.cnames.keys()[colors.cnames.values().index(hex)] 

但只是为了刁难,似乎用的QColor产生的十六进制代码( )与Matplotlib彩色词典中的不兼容!

有没有解决方案呢?

+0

十六进制代码是十六进制代码。是什么让你觉得他们不同?你能提供一个例子吗? – ImportanceOfBeingErnest

回答

1

原来的答案,我的问题是非常简单(虽然不是很明显):

的QColor()十六进制代码如下:“#0000FF”而在Matplotlib颜色字典中的所有代码都是大写:'#0000FF'。

因此,修改上面的小功能:

import matplotlib.colors as colors 
def get_named_color(hex): 
    return colors.cnames.keys()[colors.cnames.values().index(hex.upper())] 

它工作正常。