在python中定义颜色

时间:2011-08-17 15:30:28

标签: python colors

我有一个问题可能是直截了当的,或者可能无法回答,我不确定。我想知道如何在python中定义颜色。

例如,我想简单地这样做:

myColor = #920310

然而,在python中使用'#'符号会自动注释以下内容。 有没有解决的办法?如果这个问题很简单,谢谢你,对不起

4 个答案:

答案 0 :(得分:9)

如果您想将其作为字符串,请执行

myColor = '#920310'

如果您确实希望它是Color对象,您可以执行类似

的操作
myColor = Color('#920310')

并在Color的构造函数中解释它。

如果问题是你可以#不能被解释为评论,那么答案是否定的。如果#不是评论,则不再是Python。

您可以定义自己的类似Python的语言,其中#之后的=并不意味着评论(因为那不是有效的Python),它不会破坏任何代码,但是你不能在不破坏代码的情况下在其他地方使用#语法。

答案 1 :(得分:3)

myColor = int('920310', 16) #as an integer (assuming an RGB color in hex)

myColor = '#920310' #as a string

from collections import namedtuple
Color = namedtuple("Color", "R G B")
myColor = Color(0x92, 0x03, 0x10)
#as a namedtuple

您可能正在寻找许多东西,同样多的方法可以使用它。最终,这取决于你想要如何使用这种颜色。

答案 2 :(得分:2)

根据您计划使用这些值的方式,您有很多选择:

colorString = "#920310"
colorList   = [0x93, 0x03, 0x10] 
colorTuple  = (0x93, 0x03, 0x10)
colorDict   = {
   "R" : 0x93,
   "G" : 0x03,
   "B" : 0x10,
}

或者,如果您打算使用多种操作来处理颜色,比如转换为不同的格式,您可以定义Color类:

class Color(object):
   def __init__(self, r, g, b):
       self._color = (r,g,b)

   def get_tuple(self):
       return self._color

   def get_str(self):
       return "#%02X%02X%02X" % self._color

   def __str__(self):
       return self.get_str()

   def get_YUV(self):
       # ...

使用示例:

>>> a = Color(0x93, 0x03, 0xAA) # set using hex
>>> print a
#9303AA
>>> b = Color(12, 123, 3) # set using int
>>> print b
#0C7B03

答案 3 :(得分:1)

mycolor = '#<colorcodehere>'

mycolor将被视为一个字符串,因此顶点内的所有内容都将被读取(#too)