8.3 QColorDialog颜色选择对话框

一、QColorDialog颜色选择对话框

1.基本概念

  • QColorDialog是PyQt5中用于设置控件或其他部件颜色的类,通过一个颜色选择对话框来设置颜色,类似之前学习的字体选择对话框。
  • 通过一个弹出的对话框来完成其效果,这当中注意静态方法、构造函数以及QColor对象的学习。

2.代码

点击查看代码
from PyQt5.Qt import *
import sys

class Window(QWidget) :
    def __init__(self) :
        super().__init__()
        self.setWindowTitle("QColorDialog颜色选择对话框 - PyQt5中文网")
        self.resize(600, 500)
        self.func_list()

    def func_list(self) :
        self.func()

    def func(self) :
        ## 1.构造方法
        cd = QColorDialog(self)
        ## 2.既定颜色设置
        '''
        颜色位置
        0 2 4 ...
        1 3 5 ...
        '''
        #cd.setCustomColor(3, QColor(100, 120, 5))  # 3为位置下标
        ## 3.默认颜色设置
        #cd = QColorDialog(QColor(155, 200, 20), self)
        ## 4.输出窗口
        #cd.show()

        ## 5.案例:点击按钮实现功能
        btn=QPushButton(self)
        btn.move(100,100)
        btn.setText('选择颜色')
        #btn.clicked.connect(lambda :cd.open())

        ## 5.1使用show()设置背景色--可以自定义设置背景
        # def color(col):
        #     pal = QPalette() #创建颜色对象
        #     pal.setColor(QPalette.Background, col)  # 选择背景界面,插入颜色对象
        #     self.setPalette(pal)  # 设置背景色
        # cd.colorSelected.connect(color)
        # #cd.show()  # show()没有返回值,所以需要借助上面的槽函数完成背景色设置
        # btn.clicked.connect(lambda : cd.show())


        # # 5.2使用open()设置背景色
        # def color():
        #     pal = QPalette()
        #     pal.setColor(QPalette.Background, cd.selectedColor())  # 选择背景界面,获取选中颜色
        #     self.setPalette(pal)  # 设置背景色
        # #cd.open(color)  # open()直接当成链接信号
        # btn.clicked.connect(lambda : cd.open(color) )

        # # 5.3使用exec()设置背景色
        # def color():
        #     pal = QPalette()
        #     pal.setColor(QPalette.Background, cd.selectedColor())  # 选择背景界面,获取选中颜色
        #     self.setPalette(pal)  # 设置背景色
        # if cd.exec():  # 拥有返回值,直接调用color函数进行设置
        #     color()
        # # btn.clicked.connect(lambda : cd.open(color))


        '''
        # 6.选项控制
        # QColorDialog.ShowAlphaChannel  # 颜色透明度设置
        # QColorDialog.NoButtons  # 不现实OK和取消按钮
        '''
        # def color():
        #     pal = QPalette()
        #     pal.setColor(QPalette.Background, cd.currentColor())  # 选择背景界面,获取当前颜色
        #     self.setPalette(pal)  # 设置背景色
        # cd.currentColorChanged.connect(color)  # 链接信号
        # cd.setOptions(QColorDialog.ShowAlphaChannel) # 添加另外一个 QColorDialog.NoButtons |
        # cd.show()

        '''
        # 7.静态方法
        # QColorDialog.customCount()
        # QColorDialog.setCustomColor()
        # QColorDialog.customColor()
        # QColorDialog.setCustomColor()
        # QColorDialog.getColor()
        '''
        #btn.clicked.connect(lambda: print(QColorDialog.customCount()))  # 静态方法可以使用类调用也可以使用对象调用
        # btn.clicked.connect(lambda: print(cd.customCount()))  # 静态方法可以使用类调用也可以使用对象调用

        # 0是第一个颜色框,但是这里没有办法显示,是因为setCustomColor必须创建在qd之前
        #btn.clicked.connect(lambda: print(cd.setCustomColor(0, QColor(100, 120, 5))))  # 返回22和23行

        #测试getColor()
        def test():
            res=cd.getColor(QColor(100,200,1),self,'选择你喜欢的颜色')
            print(res)  #返回获得的颜色的值
        btn.clicked.connect(test)


if __name__ == '__main__' :
    app = QApplication(sys.argv)
    window = Window()

    window.show()
    sys.exit(app.exec_())

3.效果

posted @   Trouvaille_fighting  阅读(411)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· 单线程的Redis速度为什么快?
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
点击右上角即可分享
微信分享提示

目录导航