【问题标题】:Use the same color palette for different projects为不同的项目使用相同的调色板
【发布时间】:2022-07-09 07:19:30
【问题描述】:

一段时间以来,我一直在寻找一种方法来保持统一的颜色选择,以便我可以在不同的项目中访问并与不同的框架一起使用。

这个想法是定义一个调色板,例如:

palette = {
    "orange": "#ce8964",
    "yellow": "#eaf27c",
    "green": "#71b48d",
    "blue": "#454ade"
}

翻译成这些颜色:

但是,我不是每次想使用调色板时都重新定义这些元组,而是希望能够在需要时使用一行代码(如palette = load_colors())从某处加载它们。

这很有用,因为我不记得以前项目中使用的颜色值,所以我发现自己经常在旧脚本中搜索它们。

当我加载颜色时,它们也应该改变格式以被我正在使用的框架理解:

在 tkinter 中,颜色是十六进制字符串:

palette["orange"] = '#ce8964'
canvas.create_line(0, 0, 100, 100, fill=palette["orange"])

在 pygame 中它们是 RGB 元组:

palette["orange"] = (206, 137, 100)
pygame.draw.line(win, palette["orange"], (0, 0), (100, 100))

但我想让orange 被普遍理解,以便它可以用于任何目标框架。

有没有办法实现这样的系统?

【问题讨论】:

    标签: python colors palette color-palette


    【解决方案1】:

    colorir 就是为了这个目的而存在的。

    调色板是命名颜色的集合,在这种情况下:

    from colorir import *
    palette = Palette(
        name="my_palette",
        orange"="#ce8964",
        yellow"="#eaf27c",
        green"="#71b48d",
        blue"="#454ade"
    )
    

    调色板可以用palette.save()保存。

    然后用palette = Palette.load("my_palette") 加载(甚至来自不同的项目)。

    保存-加载过程完全由 colorir 管理,因此您不必处理任何文件或目录。

    然后按如下方式访问颜色:

    >>> palette.orange
    Hex('#ce8964')
    

    并且它们可以直接提供给框架(之前不需要转换为字符串):

    # Tkinter
    win = Tk()
    win.config(bg=palette.orange)  # Supply orange as background color
    win.mainloop()
    

    为确保palette 与其他框架兼容,您只需在加载时指定所需的格式:

    >>> palette = Palette.load("my_palette", PYGAME_COLOR_FORMAT)
    >>> palette.orange  # This can be passed to pygame functions now
    sRGB(206, 137, 100)  
    

    colorir 还具有诸如色板(也可以查看它们的外观)、从渐变创建调色板等功能,以及更多使为项目选择调色板变得更加容易的功能。

    免责声明

    我是colorir的开发者

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-08-23
      • 2016-08-10
      • 1970-01-01
      • 1970-01-01
      • 2012-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多