颜色对话框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对话框。
颜色对话框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)此枚举指定影响颜色对话框外观的各种选项。
Constant Description 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()