PyQt5_QColorDialog_颜色选择对话框

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 ^. ^

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值