QColorDialog 颜色选择对话框
QColorDialog(parent: QWidget = None) # 创建对象的同时设置父对象
QColorDialog(Union[QColor, Qt.GlobalColor, QGradient], parent: QWidget = None) # 创建对象的同时通过QColor对象设置默认颜色和父对象
open(self)
open(PYQT_SLOT) # 打开后, 会自动连接colorSelected信号与此处指定的槽函数
exec() -> int # 返回是否点击确定
setCurrentColor(QColor()) # 设置当前颜色
currentColor() -> QColor # 获取当前颜色
selectedColor() # 获取最后选择的颜色
setOption(self, QColorDialog.ColorDialogOption, on: bool = True)
setOptions(self, Union[QColorDialog.ColorDialogOptions, QColorDialog.ColorDialogOption])
testOption(self, QColorDialog.ColorDialogOption)
# 补充
# 参数:QColorDialog.ColorDialogOption
QColorDialog.ShowAlphaChannel # 允许用户选择颜色的alpha分量(透明度)。
QColorDialog.NoButtons # 不显示“ 确定”和“ 取消”按钮。(对“实时对话框”有用。)
QColorDialog.DontUseNativeDialog # 使用Qt的标准颜色对话框而不是操作系统原生颜色对话框。
customCount() -> int # 获取自定义颜色区域的块个数
setCustomColor(int index, QColor color) # 根据索引设置自定义颜色区域指定块的颜色,需要在对象创建之前设置
customColor(int index) -> QColor # 获取标准颜色区域的块个数
setStandardColor(int index, QColor color) # 根据索引设置标准颜色区域指定块的颜色,需要在对象创建之前设置
standardColor(int index) -> QColor # 通过索引获取标准颜色区域指定块的颜色
getColor(initial: Union[QColor, Qt.GlobalColor, QGradient] = Qt.white, parent: QWidget = None, title: str = '', options: Union[QColorDialog.ColorDialogOptions, QColorDialog.ColorDialogOption] = QColorDialog.ColorDialogOptions()) -> QColor # 打开颜色选择对话框,并返回一个QColor对象
# 参数
initial:设置默认颜色
parent:设置父对象
title:设置对话框标题
options:设置选项
# 返回值:返回QColor对象(点取消时,返回黑色)
currentColorChanged(QColor color) # 当前选择颜色发生改变时发射该信号
colorSelected(QColor color) # 最后确定选择颜色时发射该信号
# 方法一
palette = QPalette() # 获取palette对象
palette.setColor(colorRole, color) # 为palette对象指定角色和要设置的颜色
labe.setPalette(palette) # 为控件设置调色板
labe.setAutoFillBackground(bool) # 设置自动填充背景属性。角色为Background时,要加上这句才生效
# 方法二
palette = widget.palette() # 获取控件的palette对象
palette.setColor(colorRole, color) # 为palette对象指定角色和要设置的颜色
widget.setPalette(palette) # 为控件设置调色板
widget.setAutoFillBackground(bool) # 设置自动填充背景属性。角色为Background时,要加上这句才生效
setColor(QPalette.ColorGroup, QPalette.ColorRole, color_name)
setColor(QPalette.ColorRole, color_name)
名称 | 说明 |
---|---|
Active Group | 该组的颜色用于当前活动的(active)窗口,即具有键盘或鼠标焦点的窗口 |
Inactive Group | 该组的颜色用于非活动的(其他)窗口 |
Disable Group | 该组的颜色用于窗口为不可用的(disabled)子窗口部件(不包含窗口) |
名称 | 说明 |
---|---|
QPalette.Window | 窗口部件背景色(QPalette.Background已废弃) |
QPalette.WindowText | 窗口部件前景色(文本颜色)(QPalette.Foreground已废弃) |
QPalette.Base | 文本输入部件(QLineEdit等)背景色 |
QPalette.Text | 文本输入部件(QLineEdit等)前景色(文本颜色) |
QPalette.Button | 按钮部件背景色(注: QPushButton的背景颜色涉及样式表, 所以不能通过QPalette修改) |
QPalette.ButtonText | 按钮部件前景色(文件颜色) |
QPalette.Highlight | 文字被选中后的背景色 |
QPalette.HighlightedText | 文字被选中后的前景色(文本颜色) |
QPalette.ToolTipBase | QToolTip背景色 |
QPalette.ToolTipText | QToolTip前景色 |
Qpalette.AlternateBase | ? |
Qpalette.BrightText | ? |
名称 | 中文名 | 说明 |
---|---|---|
RGB | 红绿蓝 | 加色模式 Red: 红色, RGB(255,0,0) Green: 绿色, RGB(0,255,0) Blue: 蓝色, RGB(0,0,255) |
HSV | ? | Hue: 色调, 0~360(红:0, 绿:120, 蓝:240, 黄:60, 青:180, 品红:300) Saturation: 饱和度, 0~100 Value: 明度, 0~100 |
CMYK | 印刷四色模式 | 减色模式 Cyan: 青色/天蓝色, RGB(0, 255, 255) Megenta: 品红/洋红, RGB(255,0,255) Yellow: 黄色, RGB(255,255,0) blacK:黑色(取尾字母,防止与Blue混淆) |
SVG1.0 | 颜色值 | 颜色名称是RGB对应的16进制数组成的字符串 #{Red}{Green}{Blue} 比如RGB(10,20,30)对应 #0A141E |
QColor(Qt.black) # 通过颜色名称初始化QColor实例
QColor('#FFFFFF') # 通过颜色HTML代号初始化QColor实例
QColor(i_red, i_green, i_blue) # 通过RGB值初始化QColor实例
QColor.fromHsv(i_hue, i_saturation, i_value) # 通过HSV值初始化QColor实例
QColor.colorNames() # 获取内置的颜色名列表
QColor(0,1,2).getRgb() # 获取RGB值的tuple,(0,1,2,255)
QColor(0,1,2).getHsv() # 获取HSV值的tuple,(210,255,2,255)
from PyQt5.Qt import *
import sys
class Windows(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle('QColorDialog-功能作用')
self.resize(500, 500)
self.widget_list()
def widget_list(self):
self.add_widget()
def add_widget(self):
# 创建对象
fontd = QFontDialog(self)
colord = QColorDialog(self)
labe = QLabel('学编程,学Python',self)
labe.move(10, 150)
# colord.open()
btn1 = QPushButton('选择字体', self)
btn1.move(10, 10)
btn2 = QPushButton('选取颜色', self)
btn2.move(10, 50)
# ***************静态方法******************* 开始
def font_select():
# 方法一:无需提前创建对象
result = QFontDialog.getFont()
# 方法二:需要提前创建对象
# result = fontd.getFont()
if result[1]:
labe.setFont(result[0])
labe.adjustSize()
def color_select():
# 方法一:无需提前创建对象
result2 = QColorDialog.getColor()
# 方法二:需要提前创建对象
# result2 = colord.getColor()
# 创建调色板方法一:
palette = QPalette()
palette.setColor(QPalette.Background, result2)
labe.setPalette(palette)
labe.setAutoFillBackground(True)
# 创建调色板方法二:
# pale = labe.palette()
# pale.setColor(QPalette.Background, result2)
# labe.setPalette(pale)
# labe.setAutoFillBackground(True)
btn1.clicked.connect(font_select)
btn2.clicked.connect(color_select)
# ***************静态方法******************* 结束
if __name__ == '__main__':
app = QApplication(sys.argv)
window = Windows()
window.show()
sys.exit(app.exec_())
from PyQt5.Qt import *
import sys
class Windows(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle('QColorDialog-可用信号')
self.resize(500, 500)
self.widget_list()
def widget_list(self):
self.add_widget()
def add_widget(self):
btn = QPushButton('选择颜色', self)
colord = QColorDialog(self)
def select_color(color):
palette = QPalette()
palette.setColor(QPalette.Window, color)
self.setPalette(palette)
# 当前颜色发生改变时发射信号
# colord.currentColorChanged.connect(select_color)
# 最终选择颜色时发射信号
colord.colorSelected.connect(select_color)
def color_test():
colord.open()
btn.clicked.connect(color_test)
if __name__ == '__main__':
app = QApplication(sys.argv)
window = Windows()
window.show()
sys.exit(app.exec_())