QColor类详细介绍

QColor 是 PyQt5 中用于表示颜色的类,支持 ​RGB、HSV、CMYK、HSL 等多种颜色模型,并提供了丰富的颜色操作和转换方法。以下是详细说明及常用方法:

一、核心功能

  • 颜色表示:支持 RGB、十六进制、预定义颜色名等方式创建颜色。
  • 颜色空间转换:RGB ↔ HSV ↔ CMYK ↔ HSL。
  • 透明度控制:通过 Alpha 通道(0 完全透明,255 完全不透明)。
  • 颜色计算:亮度调整、颜色混合、对比度计算等。

 

二、构造函数

方法 说明 示例
QColor(r: int, g: int, b: int, a: int = 255) 通过 RGB(A) 值创建 QColor(255, 0, 0)(红色)
QColor("#RRGGBB") 或 QColor("#AARRGGBB") 通过十六进制字符串创建 QColor("#FF0000")(红色)
QColor(color_name: str) 通过预定义颜色名创建 QColor("red")
QColor(Qt.GlobalColor) 使用 Qt 预定义颜色常量 QColor(Qt.red)

三、常用方法

1. 获取颜色分量
方法 说明 示例
red() -> int
green() -> int
blue() -> int
获取 RGB 分量(0-255) color.red() → 255
alpha() -> int 获取 Alpha 通道值(0-255) color.alpha() → 255
getRgb() -> Tuple[int, int, int, int] 返回 (R, G, B, A) 元组 (255, 0, 0, 255)
getHsv() -> Tuple[int, int, int, int] 返回 (H, S, V, A) 元组(H: 0-359,S/V: 0-255) (0, 255, 255, 255)
2. 修改颜色
方法 说明 示例
setRed(v: int)
setGreen(v: int)
setBlue(v: int)
设置 RGB 分量 color.setRed(128)
setAlpha(v: int) 设置透明度 color.setAlpha(128)(半透明)
setRgb(r: int, g: int, b: int, a: int = 255) 一次性设置 RGB(A) color.setRgb(0, 255, 0)(绿色)
3. 颜色转换与工具
方法 说明 示例
name() -> str 返回十六进制颜色字符串 "#ff0000"
lighter(factor: int = 150) -> QColor 提高亮度(默认+50%) QColor(0, 0, 255).lighter() → 更亮的蓝色
darker(factor: int = 200) -> QColor 降低亮度(默认-50%) QColor(255, 0, 0).darker() → 更暗的红色
toHsv() -> QColor 转换为 HSV 颜色空间 用于调整色调/饱和度
4. 颜色判断
方法 说明 示例
isValid() -> bool 颜色是否有效(如十六进制字符串非法时返回 False) QColor("#zzz").isValid() → False
lightness() -> int 计算亮度(0-255) QColor(255,255,255).lightness() → 255

四、预定义颜色常量

Qt 内置了多种颜色常量(通过 Qt.GlobalColor 访问),例如:

python

from PyQt5.QtCore import Qt

color = QColor(Qt.red)      # 红色
color = QColor(Qt.blue)     # 蓝色
color = QColor(Qt.transparent)  # 完全透明

五、代码示例

1. 创建颜色并设置控件背景

python

from PyQt5.QtWidgets import QWidget, QPushButton, QApplication

app = QApplication([])

# 创建红色背景的窗口
window = QWidget()
window.setGeometry(100, 100, 300, 200)
window.setStyleSheet("background-color: rgb(255, 0, 0);")

# 创建半透明绿色按钮
button = QPushButton("点击我", window)
button.setGeometry(50, 50, 100, 30)
button.setStyleSheet("background-color: rgba(0, 255, 0, 128);")

window.show()
app.exec_()
2. 颜色空间转换(RGB → HSV)​

python

color = QColor(255, 0, 0)  # 红色
h, s, v, a = color.getHsv()
print(f"HSV: H={h}, S={s}, V={v}")  # 输出: HSV: H=0, S=255, V=255
3. 动态调整颜色亮度

python

base_color = QColor(100, 150, 200)  # 基础颜色
lighter_color = base_color.lighter(200)  # 提高100%亮度
darker_color = base_color.darker(200)    # 降低50%亮度

六、注意事项

  1. 颜色范围

    • RGB:每个分量范围 0-255。
    • HSV:H (0-359), S (0-255), V (0-255)。
    • Alpha:0(透明)到 255(不透明)。
  2. 性能优化

    • 频繁创建颜色对象时,建议复用对象或使用预定义常量。
  3. 颜色混合

    • 混合颜色需手动计算(如 QColor.blend() 在 Qt 中,但 PyQt5 未直接提供,需自行实现)。

通过 QColor,可以轻松管理和操作颜色,适用于界面美化、数据可视化(如热力图)、绘图工具等场景!

你可能感兴趣的:(#,PyQt5.QtGui,python,开发语言,qt)