PyQt5 的颜色选择对话框,主要包括 构造函数,打开对话框,颜色选择,选项设置,静态方法。
#
# QColorDialog
# 颜色选择对话框
#
from PyQt5.Qt import *
class MyWindow(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle('QColorDialog_颜色选择对话框')
self.resize(500,500)
self.iniUI()
def iniUI(self):
btn = QPushButton(self)
self.btn = btn
btn.setText('按钮')
btn.resize(self.width() / 3, self.height() / 10)
btn.move(self.width() / 3, self.height() / 2)
cd = QColorDialog(QColor(100,100,200),self)
self.cd = cd
#######################################################使用三种不同的对话框弹出方式,获取所设置的颜色对象
#
# 现在需求:
# 使用三种不同的对话框弹出方式,获取所设置的颜色对象
#
# 解决方法1:
# 使用cd.show()
def getColorByShow(self):
def func(col):
palette = QPalette()
palette.setColor(QPalette.Background,col)
self.setPalette(palette)
self.cd.colorSelected.connect(func)#发射的信号cd.colorSelected
self.cd.show()
###############################################
#
# 解决方法2:
# 使用cd.open(func)
#
def getColorByOpen(self):
def func():
palette = QPalette()
palette.setColor(QPalette.Background,self.cd.selectedColor())#最终选中的颜色cd.selectedColor()
self.setPalette(palette)
self.cd.open(func)
###############################################
#
# 解决方法3:
# 使用cd.exec()的值 根据其为0或1 确定是否调用函数
#
def getColorByExec(self):
def func():
palette = QPalette()
palette.setColor(QPalette.Background,self.cd.selectedColor())
self.setPalette(palette)
if self.cd.exec():
func()
##################################################使用三种不同的对话框弹出方式,获取所设置的颜色对象
##############################################颜色选择对话框的Option设置
#
# 现在需求:
# 颜色选择对话框的选项设置,隐藏确认取消按钮,允许用户选择颜色的Alpha分量
#
# 解决方法:
# cd.setOption()
def set_Option(self):
def func():
palette = QPalette()
palette.setColor(QPalette.Background,self.cd.currentColor())#获取当前选中颜色cd.currentColor()
self.setPalette(palette)
self.cd.currentColorChanged.connect(func)#捕获 当前颜色变化 信号,连接槽函数
self.cd.show()#使用show 分离主窗口与对话框,用于实时展示颜色变化
self.cd.setOption(QColorDialog.NoButtons)
self.cd.setOptions(QColorDialog.ShowAlphaChannel | QColorDialog.NoButtons)
#############################颜色选择对话框的Option设置
##############################################颜色选择对话框的 调色板常用色块 的添加与获取
#
# 现在需求:
# 颜色选择对话框的 调色板常用色块 的添加与获取
#
# 解决方法:
# 以下均为静态方法,类名调用
# QColorDialog.setCustomColor( index, QColor() )
# QColorDialog.setStandardColor( index, QColor() )
# QColorDialog.getColor( QColor() )
def get_Color(self):
def func():
QColorDialog.setCustomColor(3,QColor(10,60,200))#设置自定义色块区的第三个色块颜色
color = QColorDialog.getColor(QColorDialog.customColor(3),self,'选择颜色')
palette = QPalette()
palette.setColor(QPalette.Background,color)
self.setPalette(palette)
self.cd.show()
self.btn.clicked.connect(func)
#############################颜色选择对话框的 调色板常用色块 的添加与获取
##############################################颜色选择对话框 信号相关
#
# 现在需求:
# 颜色选择对话框 信号相关
#
# 解决方法:
# 两个信号
# 一个是 颜色最终被选中 colorSelected
# 一个是 当前颜色的改变 currentColorChanged
def colorDialog_Event(self):
def btn_test():
def func(col):
palette = QPalette()
palette.setColor(QPalette.ButtonText,col)
self.btn.setPalette(palette)
self.cd.show()
self.cd.colorSelected.connect(func) #颜色被选择
# self.cd.currentColorChanged.connect(func) #当前颜色的改变
self.btn.clicked.connect(btn_test)
#############################颜色选择对话框 信号相关
if __name__ == '__main__':
import sys
app = QApplication(sys.argv)
win = MyWindow()
# win.getColorByShow()
# win.getColorByOpen()
# win.getColorByExec()
# win.set_Option()
# win.get_Color()
win.colorDialog_Event()
win.show()
sys.exit(app.exec_())
小白学习笔记,若感兴趣留个爪 haha ^. ^