Skip to content

颜色选择器组件

颜色选择器组件用于选择颜色,支持多种颜色格式和透明度调节。

颜色选择器 (ColourChooser)

基本用法

python
gui_config.add_argument(
    "--color",
    metavar="颜色选择器",
    help="选择颜色",
    default="#409EFF",
    widget="ColourChooser",
    gooey_options={
        "showAlpha": True,  # 是否支持透明度选择
        "colorFormat": "hex",  # 颜色格式 hex/rgb/hsl
        "predefine": ["#409EFF", "#67C23A", "#E6A23C", "#F56C6C", "#909399"],  # 预定义颜色
        "size": "large",  # 大小
        "disabled": False  # 是否禁用
    }
)

属性

属性名说明类型默认值
showAlpha是否支持透明度选择booleantrue
colorFormat颜色格式string'hex'
predefine预定义颜色array-
size颜色选择器大小string'default'
disabled是否禁用booleanfalse

颜色格式 (colorFormat)

颜色选择器支持三种颜色格式:

格式说明例子
hex十六进制颜色码#409EFF
rgbRGB颜色值rgb(64, 158, 255)
hslHSL颜色值hsl(210, 100%, 62%)

带透明度的颜色格式

showAlpha 设置为 true 时,颜色格式会包含透明度信息:

格式带透明度的例子
hex#409EFF80
rgbrgba(64, 158, 255, 0.5)
hslhsla(210, 100%, 62%, 0.5)

预定义颜色

预定义颜色是一组常用的颜色选项,可以通过 predefine 属性设置。用户可以直接点击这些颜色进行快速选择,无需使用颜色选择器面板。

python
# 预定义常用的颜色
predefine_colors = [
    "#409EFF",  # 主色调
    "#67C23A",  # 成功
    "#E6A23C",  # 警告
    "#F56C6C",  # 错误
    "#909399"   # 信息
]

# 在组件中使用预定义颜色
gui_config.add_argument(
    "--theme-color",
    metavar="主题颜色",
    help="选择应用主题颜色",
    default="#409EFF",
    widget="ColourChooser",
    gooey_options={
        "predefine": predefine_colors,
        "colorFormat": "hex"
    }
)

使用场景

颜色选择器适用于需要用户选择颜色的场景,例如:

  • 自定义应用主题颜色
  • 设置图表、图形的颜色
  • 选择文本颜色、背景颜色
  • 设计工具中的颜色选择
  • 个性化界面配置

最佳实践

  1. 提供默认颜色:始终为颜色选择器设置合理的默认颜色值,避免初始状态为空
  2. 明确颜色用途:在帮助文本中清晰说明颜色的用途,例如"选择文本颜色"
  3. 提供预定义颜色:对于特定场景,提供一组预定义的常用颜色,方便用户快速选择
  4. 选择合适的颜色格式:根据应用需求选择合适的颜色格式,例如Web开发通常使用hex格式
  5. 透明度选择:如果应用场景需要透明度,确保 showAlpha 设置为 true

颜色值处理

在后端处理颜色值时,需要根据 colorFormat 解析不同格式的颜色:

python
def parse_color(color_value, color_format="hex"):
    """解析不同格式的颜色值"""
    if color_format == "hex":
        # 处理十六进制颜色值
        # 例如: #409EFF 或 #409EFF80
        return color_value
    elif color_format == "rgb":
        # 处理RGB颜色值
        # 例如: rgb(64, 158, 255) 或 rgba(64, 158, 255, 0.5)
        return color_value
    elif color_format == "hsl":
        # 处理HSL颜色值
        # 例如: hsl(210, 100%, 62%) 或 hsla(210, 100%, 62%, 0.5)
        return color_value
    else:
        # 默认返回原始值
        return color_value

示例:主题色设置

python
# 主题色设置示例
gui_config.add_argument_group("主题设置", gooey_options={"show_border": True})

gui_config.add_argument(
    "--primary-color",
    metavar="主色调",
    help="设置应用主色调",
    default="#409EFF",
    widget="ColourChooser",
    gooey_options={
        "showAlpha": False,
        "colorFormat": "hex",
        "predefine": ["#409EFF", "#67C23A", "#E6A23C", "#F56C6C", "#909399"]
    }
)

gui_config.add_argument(
    "--secondary-color",
    metavar="次要颜色",
    help="设置应用次要颜色",
    default="#67C23A",
    widget="ColourChooser",
    gooey_options={
        "showAlpha": False,
        "colorFormat": "hex",
        "predefine": ["#409EFF", "#67C23A", "#E6A23C", "#F56C6C", "#909399"]
    }
)

基于MIT许可证发布