QColor的使用

    QColor类提供基于RGB、HSV或CMYK值的颜色。颜色通常用RGB(红色、绿色和蓝色)组件指定,但也可以用HSV(色相、饱和度和值)和CMYK(青色、品红、黄色和黑色)组件指定。此外,可以使用颜色名称指定颜色。颜色名称可以是SVG 1.0的任何颜色名称。

    QColor构造函数基于RGB值创建颜色。要基于HSV或CMYK值创建QColor,分别使用toHsv()和toCmyk()函数。这些函数使用所需的格式返回颜色的副本。此外,静态fromRgb()、fromHsv()和fromCmyk()函数从指定的值创建颜色。或者,可以使用convertTo()函数(以所需格式返回颜色的副本)或任何更改颜色格式的setRgb()、setHsv()和setCmyk()函数将颜色转换为三种格式中的任何一种。函数的作用是:指定颜色。

    可以通过将RGB字符串(如“#112233”)、ARGB字符串(如“#ff112233”)或颜色名称(如“blue”)传递给setNamedColor()函数来设置颜色。颜色名称取自SVG 1.0颜色名称。函数的作用是:返回颜色的名称。颜色也可以使用setRgb()、setHsv()和setCmyk()来设置。要获得较浅或较深的颜色,分别使用较浅()和较深()函数。

通过颜色名称设置的例子:(名称必须是Predefined Colors里面的)

background_color = QColor()
background_color.setNamedColor('blue')

   设置蓝色还可以通过(括号里面的整数值啥意思,饱和度亮度?哪位能告知)

background_color = QColor()
background_color.setBlue(100)

    isValid()函数表示QColor是否合法。例如,RGB颜色的RGB值超出范围是非法的。由于性能原因,QColor基本上不考虑非法颜色,因此,使用无效颜色的结果是无法定义的。

    颜色组件可以单独检索,例如。用红色(),色调()和青色()。还可以使用getRgb()、getHsv()和getCmyk()函数一次性检索颜色组件的值。使用RGB颜色模型,还可以使用RGB()访问颜色组件。

    有几个相关的非成员:QRgb是一个类型定义,用于表示RGB值三元组的无符号int (r, g, b)。qRed()、qBlue()和qGreen()函数返回给定的QRgb值的各个组件,而QRgb()和qRgba()函数根据给定的组件值创建并返回QRgb三元组。最后,qAlpha()函数返回提供的QRgb的alpha组件,qGray()函数根据给定的值计算并返回一个灰色值。

QColor是平台和设备独立的。QColormap类将颜色映射到硬件。

整数 vs浮点精度

    QColor支持浮点精度,提供所有颜色组件函数的浮点版本,例如getRgbF()、hueF()和fromCmykF()。注意,由于组件是使用16位整数存储的,因此使用setRgbF()和getRgbF()函数返回的值之间可能存在微小的偏差。

    虽然基于整数的函数取值范围为0-255 (hue()除外,其值必须在0-359范围内),但浮点函数接受范围为0.0 - 1.0的值。

下面贴一个显示蓝底红字的例子

import sys

from PyQt5.QtCore import Qt
from PyQt5.QtGui import QColor, QPalette
from PyQt5.QtWidgets import QWidget, QApplication, QTextEdit, QMainWindow, QColorDialog


class Example1(QMainWindow):
    def __init__(self):
        super().__init__()
        self.init_ui()

    def init_ui(self):
        background_color = QColor()
        background_color.setNamedColor('blue')
        #self_color = QColorDialog.getColor()

        self.text_editor = QTextEdit()
        color_palette = self.text_editor.palette()
        color_palette.setColor(QPalette.Text, Qt.red)
        color_palette.setColor(QPalette.Base, background_color)
        #color_palette.setColor(QPalette.Base, self_color)
        self.text_editor.setPalette(color_palette)

        default_font = self.text_editor.font()
        default_font.setPointSize(9)
        self.text_editor.setFont(default_font)

        self.setWindowTitle('Example')
        self.setCentralWidget(self.text_editor)
        self.setGeometry(500, 500, 500, 500)

        self.show()

if __name__ == '__main__':
    app = QApplication(sys.argv)
    example = Example1()
    sys.exit(app.exec_())

效果如下:

欢迎加入QQ群:853840665,一块学习分享资料

  • 8
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

有一双挣钱的小能手

您的打赏是众人更好的前行!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值