10-窗口、窗口控件、对话框以及相关功能类- 颜色对话框QColorDialog

颜色对话框QColorDialog

QColorDialog

颜色对话框 QColorDialog 和字体对话框 QFontDialog 类似,也是一种标准对话框,供用户选择颜色。颜色对话框的界面如图所示,在对话框中用户可以自己设定和选择颜色,还可使用标准颜色,另外用户也可保存自己设定的颜色

用QColorDialog 类创建标准颜色对话框的方法如下,其中参数 QColor 用于初始化对话框,还可以用Qt.GlobalColor 和 QGradient 初始化颜色

from PySide6.QtWidgets import QColorDialog

QColorDialog(initial: Union[PySide6.QtGui.QColor,PySide6.QtGui.QRgba64,Any,PySide6.QtCore.Qt.GlobalColor,str,int],parent: Union[PySide6.QtWidgets.QWidget,NoneType]=None)-> None
QColorDialog(parent: Union[PySide6.QtWidgets.QWidget,NoneType]=None)-> None 
颜色对话框QColorDialog 的说明

颜色对话框的功能是允许用户选择颜色。例如,可以在绘图程序中使用此选项,以允许用户设置画笔颜色。

静态函数提供模式颜色对话框。

静态getColor()函数显示对话框,并允许用户指定颜色。此函数还可用于让用户选择具有透明度级别的颜色:将ShowAlphaChannel选项作为附加参数传递。

用户可以存储不同的自定义颜色customCount()。自定义颜色由所有颜色对话框共享,并在程序执行期间记住。使用setCustomColor()设置自定义颜色,并使用customColor()获取它们。
按下"Pick Screen Color"(选择屏幕颜色)按钮时,光标将变为十字形,并扫描屏幕上的颜色。用户可以通过单击鼠标或Enter按钮来选择一个。按Esc键可恢复进入此模式之前选择的最后一种颜色。

标准对话框示例显示了如何使用QColorDialog以及其他内置的Qt对话框。

../../_images/fusion-colordialog.png

颜色对话框QColorDialog 的属性
属性描述访问功能
currentColor: PySide6.QtGui.QColor此属性保留对话框中当前选定的颜色。currentColor()

setCurrentColor(color)

Signal currentColorChanged(color)
options: ColorDialogOptions此属性包含影响对话框外观的各种选项。
默认情况下,所有选项都处于禁用状态。
应在显示对话框之前设置选项。在对话框可见时设置它们并不能保证对对话框产生即时效果(取决于选项和平台)。
options()

setOptions(options)
颜色对话框QColorDialog 的常用方法

颜色对话框 QColorDialog 的常用方法如表所示,大部分与字体对话的用法相同。

  • 颜色对话框的显示可以用show()open()和 exec()方法,也可以用gelColor()方法。getColor()方法是静态方法,直接使用"类名.getColor()"方法调用,也可用实例对象调用

  • 用setOption(PySide6.QtWidgets.QColorDialog.ColorDialogOption[,on=True])方法设置颜色,对话框的选项(默认情况下所有选项都是禁用的),其中ColorDialogOption 可以取:

    PySide6.QtWidgets.QColorDialog.ColorDialogOption(继承enum.Flag)此枚举指定影响颜色对话框外观的各种选项。

    ConstantDescription
    QColorDialog.ShowAlphaChannel允许用户选择颜色的alpha组件。
    QColorDialog.NoButtons不显示"确定"和"取消"按钮。(对于"实时对话"很有用。)
    QColorDialog.DontUseNativeDialog使用Qt的标准颜色对话框,而不是操作系统的本机颜色对话框。
  • 颜色对话中有标准的颜色,可以用standardColor(index:int)方法获取标准颜色,用setStandardColor(index:int,QColor)方法设置标准颜色

  • 颜色对话框可以存储用户指定的颜色,用setCustomColor(index: int,QColor)方装设置用户颜色,用customColor(index:int)方法获取用户颜色

QColorDialog的方法及参数类型返回值的类型说 明
selectedColor()QColor获取颜色对话框中单击 OK 按钮后 选中的颜色
setCurrentColor(QColor)None设置颜色对话框中当前颜色,用于 初始化对话框
currentColor()QColor获取对话框中当前的颜色
setOption(QColorDialog.ColorDialogOption [,on=True])None设置颜色对话框的选项
setOptions(options:QColorDialog.ColorDialogOption)设置颜色对话框的选项
testOption(QColorDialog.ColorDialogOption)bool如果给定选项已启用,则返回true;否则,返回false。
[static]setCustomColor(index:int,QColor)None将索引处的自定义颜色设置为QColor颜色值。
[static]customColor(index: int)QColor返回给定索引处的自定义颜色作为QColor值。
[static]customCount()Int返回QColorDialog支持的自定义颜色数。所有颜色对话框共享相同的自定义颜色。
[static]setStandardColor(index: int,QColor)None将索引处的标准颜色设置为QColor颜色值。
[static]standardColor(index:int)QColor返回给定索引处的标准颜色作为QColor值。
[static]getColor(initial: QColor=Qt.white,parent:QWidget=None,title: str=“”,options: QColorDialog.ColorDialogOptions)QColor弹出一个具有给定窗口标题的模式颜色对话框(如果未指定,则为"选择颜色"),让用户选择一种颜色,然后返回该颜色。颜色最初设置为初始颜色。该对话框是父对话框的子对话框。如果用户取消对话框,它将返回一个无效的颜色(请参见isValid())。 options参数允许您自定义对话框。
open(receiver:QObject,member:str)打开对话框并将其colorSelected()信号连接到接收器和成员指定的插槽。 当对话框关闭时,信号将从插槽断开。
options()获取options属性选项
颜色对话框 QColorDialog 的信号
信号描述
colorSelected(color:PySide6.QtGui.QColor)此信号是在用户单击"确定"以选择要使用的颜色之后发出的。所选颜色由颜色指定。
currentColorChanged(color:PySide6.QtGui.QColor)只要对话框中的当前颜色发生变化,就会发出此信号。当前颜色由颜色指定。
颜色对话框 QColorDialog 的例子
# -*- coding: UTF-8 -*-
# File date: Hi_2023/3/14 23:27
# File_name: 05-QColorDialog 例子.py


import sys
from PySide6.QtWidgets import *
from PySide6.QtCore import *
from PySide6.QtGui import *


class ColorDlg(QDialog):

    def __init__(self,parent=None):
        super(ColorDlg,self).__init__(parent)
        self.setWindowTitle('QColorDialog案例')

        layout = QVBoxLayout()
        self.setLayout(layout)

        self.colorLabel = QLabel('显示颜色效果')
        layout.addWidget(self.colorLabel)

        colorButton = QPushButton("QColorDialog.get&Color()")
        colorButton.clicked.connect(self.setColor)
        layout.addWidget(colorButton)

        # 颜色选项
        self.colorDialogOptionsWidget = DialogOptionsWidget()
        self.colorDialogOptionsWidget.addCheckBox("使用Qt对话框(非系统)",QColorDialog.DontUseNativeDialog)
        self.colorDialogOptionsWidget.addCheckBox("显示透明度alpha",QColorDialog.ShowAlphaChannel)
        self.colorDialogOptionsWidget.addCheckBox("不显示buttons",QColorDialog.NoButtons)
        layout.addWidget(self.colorDialogOptionsWidget)

        # 自定义颜色设置
        layout.addSpacerItem(QSpacerItem(100,20))
        self.label2 = QLabel('设置自定义颜色')
        layout.addWidget(self.label2)
        self.combobox = QComboBox(self,minimumWidth=100)
        item_list =['#ffffff','#ffff00','#ff0751','#52aeff']
        index_list =[2,3,4,5]
        for i in range(len(item_list)):
            self.combobox.addItem(item_list[i],index_list[i])
        self.combobox.activated.connect(lambda: self.on_activate(self.combobox))
        layout.addWidget(self.combobox)

    def setColor(self):
        options = self.colorDialogOptionsWidget.value()
        if options:
            color = QColorDialog.getColor(Qt.green,self,"Select Color",options)
        else:
            color = QColorDialog.getColor(Qt.green,self,"Select Color")
        if color.isValid():
            self.colorLabel.setText(color.name())
            self.colorLabel.setPalette(QPalette(color))
            self.colorLabel.setAutoFillBackground(True)

    def on_activate(self,combobox):
        color = QColor(combobox.currentText())
        index = combobox.currentData()
        QColorDialog.setCustomColor(index,color)
        self.label2.setText('QColorDialog在位置{} 已经添加自定义颜色{}'.format(index,combobox.currentText()))
        self.label2.setPalette(QPalette(color))
        self.label2.setAutoFillBackground(True)


class DialogOptionsWidget(QWidget):

    def __init__(self,parent=None):
        super(DialogOptionsWidget,self).__init__(parent)

        self.layout = QVBoxLayout()
        self.setLayout(self.layout)
        self.checkBoxList =[]

    def addCheckBox(self,text,value):
        checkBox = QCheckBox(text)
        self.layout.addWidget(checkBox)
        self.checkBoxList.append((checkBox,value))

    def value(self):
        result = 0
        for checkbox_tuple in self.checkBoxList:
            if checkbox_tuple[0].isChecked():
                result = checkbox_tuple[1]
        return result


if __name__ =='__main__':
    app = QApplication(sys.argv)
    form = ColorDlg()
    form.show()
    app.exec()

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

士别三日,当挖目相待

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值