【问题标题】:Defining a color in python在python中定义颜色
【发布时间】:2011-08-17 15:30:27
【问题描述】:

我有一个问题可能很直接,也可能无法回答,我不确定。我想知道如何在 python 中定义颜色。

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

myColor = #920310

但是,在 python 中使用“#”符号会自动匹配后面的任何内容。 有没有解决的办法?谢谢,对不起,如果这个问题很简单

【问题讨论】:

  • 你打算如何使用这个变量?
  • 一种颜色在什么情况下?您定义颜色的方式可能取决于您打算使用它的用途。

标签: python colors


【解决方案1】:

如果你想要它作为一个字符串,做

myColor = '#920310'

如果你真的希望它是一个 Color 对象,你可以这样做

myColor = Color('#920310')

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

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

您可以定义自己的类似 Python 的语言,其中 #= 之后并不意味着注释(因为无论如何这都不是有效的 Python)并且它不会破坏任何代码,但您不会不能在不破坏代码的情况下在别处使用# 语法。

【讨论】:

  • 对“不再是 python”部分的赞誉
  • 新的语法部分很有趣,但不清楚他的意思,所以我几乎不得不:)
  • 至于语法Color('#920310'),您可以使用colour python module,它使用完全相同的语法。免责声明:我是这个模块的作者。
  • @vaab 我想你应该在这里发布一个关于colour 的答案。这似乎比使用字符串表示颜色要好得多
【解决方案2】:
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

您可以寻找很多东西,同样有很多方法可以使用它。最终,这取决于你想如何使用这种颜色。

【讨论】:

  • 非常感谢,先从简单的字符串解决方案开始^^
【解决方案3】:

根据您计划如何使用这些值,您有很多选择:

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

【讨论】:

    【解决方案4】:
    mycolor = '#<colorcodehere>'
    

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

    【讨论】:

      猜你喜欢
      • 2015-12-08
      • 2017-08-29
      • 2021-12-28
      • 2017-02-25
      • 2019-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多