PySide6 GUI 学习笔记——常用类及控件使用方法(常用类颜色QColor)
文章目录
- 一、概述
- 二、核心功能
- 三、常用函数及方法
- 四、代码示例
- 五、注意事项
一、概述
QColor
是用于处理颜色的类,支持 RGB、HSV、HSL、CMYK 等多种颜色模型,提供颜色创建、转换、分量操作及格式转换功能。支持透明度设置,可通过颜色名称或十六进制字符串定义颜色。
该类的说明详见文档:PySide6.QtGui.QColor
二、核心功能
类别 | 功能描述 |
---|---|
颜色模型 | 支持 RGB(A)、HSV、HSL、CMYK、Extended RGB 模型 |
创建方式 | 通过分量值、颜色名称、十六进制字符串、静态工厂方法(如 fromRgb())创建 |
颜色转换 | 提供 toHsv()、toCmyk() 等方法在不同模型间转换 |
分量操作 | 获取/设置各颜色分量(如 red(), setAlpha()) |
工具方法 | 调整明暗(lighter(), darker())、检查有效性(isValid())、获取字符串名称 |
三、常用函数及方法
方法/函数 | 功能描述 | Python 示例 |
---|---|---|
构造函数 | ||
QColor(r, g, b[, a=255]) | 通过 RGB(A) 整数值创建颜色(0-255) | color = QColor(255, 0, 0, 127) # 半透明红色 |
QColor("#RRGGBB") | 通过十六进制字符串创建颜色 | color = QColor("#FF0000") # 红色 |
QColor("colorname") | 通过 SVG 颜色名称创建(如 “red”, “blue”) | color = QColor("steelblue") |
静态工厂方法 | ||
QColor.fromRgb(r, g, b[, a=255]) | 从 RGB 整数值创建 | color = QColor.fromRgb(0, 255, 0) # 绿色 |
QColor.fromHsv(h, s, v[, a=255]) | 从 HSV 整数值创建(h:0-359, s/v:0-255) | color = QColor.fromHsv(240, 255, 255) # 蓝色 |
QColor.fromCmyk(c, m, y, k[, a=255]) | 从 CMYK 整数值创建 | color = QColor.fromCmyk(255, 0, 0, 0) # 青色 |
颜色分量获取 | ||
red()/green()/blue()/alpha() | 返回 RGB 分量(0-255) | r = color.red() |
getRgb() | 返回元组 (r, g, b, a) | r, g, b, a = color.getRgb() |
hue()/saturation()/value() | 返回 HSV 分量(h:0-359, s/v:0-255) | h = color.hue() |
颜色分量设置 | ||
setRed(r)/setGreen(g)/setBlue(b) | 设置 RGB 分量(0-255) | color.setRed(128) |
setAlpha(a) | 设置透明度(0-255, 0=全透明) | color.setAlpha(127) # 半透明 |
setRgb(r, g, b[, a=255]) | 同时设置 RGB(A) 分量 | color.setRgb(255, 200, 0) |
颜色转换 | ||
toRgb()/toHsv()/toCmyk() | 转换为指定颜色模型的新 QColor 对象 | hsv_color = color.toHsv() |
工具方法 | ||
lighter(factor=150) | 返回更亮的颜色(factor>100) | light_red = QColor("red").lighter(200) |
darker(factor=200) | 返回更暗的颜色(factor>100) | dark_blue = QColor("blue").darker(300) |
name(format=HexRgb) | 返回颜色字符串(如 “#FF0000”) | hex_str = color.name(QColor.HexArgb) # 带透明度的十六进制 |
isValid() | 检查颜色是否合法 | if color.isValid(): print("Valid color") |
四、代码示例
from PySide6.QtGui import QColor# 创建颜色对象
color1 = QColor(255, 0, 0) # 红色 (RGB)
color2 = QColor("#00FF00") # 绿色 (十六进制)
color3 = QColor.fromHsv(180, 255, 255) # 青色 (HSV)# 获取颜色分量
r, g, b, a = color1.getRgb()
print(f"RGB: {r}, {g}, {b}, Alpha: {a}") # 输出: RGB: 255, 0, 0, Alpha: 255# 设置透明度
color1.setAlpha(127)
print(color1.alpha()) # 输出: 127# 转换为 CMYK
cmyk_color = color1.toCmyk()
c, m, y, k, a = cmyk_color.getCmyk()
print(f"CMYK: {c}, {m}, {y}, {k}") # 近似值# 调整颜色亮度
darker_color = color2.darker(200)
lighter_color = color3.lighter(150)# 检查有效性
invalid_color = QColor()
print(invalid_color.isValid()) # 输出: False
输出结果:
五、注意事项
- 颜色模型精度:整数方法范围通常为 0-255,浮点方法为 0.0-1.0。
- 颜色名称:需使用 SVG 1.0 标准名称(如 “aqua” 而非 “cyan”)。
- 无效颜色:默认构造的 QColor 无效,需通过合法参数初始化。
- 性能:直接操作分量比转换模型更高效。
通过 QColor
可灵活处理颜色需求,适用于 GUI 绘图、样式设置等场景。