QColorDialog----简介

1、QColorDialog:颜色选择对话框,都是通过构造函数构造出相关的对象。 

 构造函数:

from PyQt5.Qt import *

class Window(QWidget):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("QColorDialog的学习")
        self.resize(500, 500)
        self.setup_ui()

    def setup_ui(self):
        cd = QColorDialog(QColor(100, 200, 150), self)
        cd.setWindowTitle("选择一个好看的颜色")
        cd.show()


if __name__ == "__main__":
    import sys
    app = QApplication(sys.argv)
    window = Window()
    window.resize(500, 500)
    window.show()

    sys.exit(app.exec_())

2、功能作用:

①打开对话框:

 调用show()如何获得用户所选择的对象:进入该函数,发现并无返回值,所以只能使用其他信号解决该问题。

选中一个颜色设置为背景:用show方法时

from PyQt5.Qt import *

class Window(QWidget):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("QColorDialog的学习")
        self.resize(500, 500)
        self.setup_ui()

    def setup_ui(self):
        # 修改控件的背景颜色,会影响控件内部的子控件
        # self.setStyleSheet("backcolor:red")
        # self.setStyleSheet("backcolor:rgb(100, 200, 150)")

        cd = QColorDialog(QColor(100, 200, 150), self)
        cd.setWindowTitle("选择一个好看的颜色")
        def color(col):
            # 使用调色板对象
            palette = QPalette()
            palette.setColor(QPalette.Background, col)
            self.setPalette(palette)

        cd.colorSelected.connect(color)
        cd.show()


if __name__ == "__main__":
    import sys
    app = QApplication(sys.argv)
    window = Window()
    window.resize(500, 500)
    window.show()

    sys.exit(app.exec_())

用open()方法:

from PyQt5.Qt import *

class Window(QWidget):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("QColorDialog的学习")
        self.resize(500, 500)
        self.setup_ui()

    def setup_ui(self):
        cd = QColorDialog(QColor(100, 200, 150), self)
        cd.setWindowTitle("选择一个好看的颜色")

        def open_color():
            palette = QPalette()
            palette.setColor(QPalette.Background, cd.selectedColor())
            self.setPalette(palette)
        cd.open(open_color)


if __name__ == "__main__":
    import sys
    app = QApplication(sys.argv)
    window = Window()
    window.resize(500, 500)
    window.show()

    sys.exit(app.exec_())

用exec()方法,会返回1或0结果:

        def exec_color():
            # 使用调色板对象
            palette = QPalette()
            palette.setColor(QPalette.Background, cd.selectedColor())
            self.setPalette(palette)

        if cd.exec():
            exec_color()

②选项控制:控制对话框中的样式,不显示确定和取消按钮等,选取α分量。

        不显示确定和取消按钮,一般是用来实时显示信息。

from PyQt5.Qt import *

class Window(QWidget):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("QColorDialog的学习")
        self.resize(500, 500)
        self.setup_ui()

    def setup_ui(self):
        cd = QColorDialog(QColor(100, 200, 150), self)
        cd.setWindowTitle("选择一个好看的颜色")
        def color(col):
            # 使用调色板对象
            palette = QPalette()
            palette.setColor(QPalette.Background, col)
            self.setPalette(palette)

        def curr_color():
            palette = QPalette()
            palette.setColor(QPalette.Background, cd.currentColor())
            self.setPalette(palette)

        cd.currentColorChanged.connect(curr_color)
        cd.setOptions(QColorDialog.NoButtons | QColorDialog.ShowAlphaChannel)
        cd.show()

if __name__ == "__main__":
    import sys
    app = QApplication(sys.argv)
    window = Window()
    window.resize(500, 500)
    window.show()

    sys.exit(app.exec_())

③静态方法:即调用这些方法是QColorDialog方法调用。

 自定义颜色,标准颜色:(上方是标准颜色、下方是自定义颜色),通过相关方法设置对应位置的颜色。也可以通过相关方法获取指定位置的颜色。

 customCount()获取自定义颜色的个数(小格子的个数)

setCustomColor()通过指定索引设置颜色。

案例:点击按钮时打印自定义颜色的个数:(验证他是静态方法,通过类名调用)

        btn = QPushButton(self)
        btn.move(100, 100)
        btn.setText("测试按钮")
        btn.clicked.connect(lambda: print(QColorDialog.customCount()))
        # 或者控件调用也可以
        #btn.clicked.connect(lambda: print(cd.customCount()))

根据指定索引设置自定义颜色:(需要在颜色选择对话框创建之前,指定颜色,才会有效)

    def setup_ui(self):
        # 修改控件的背景颜色,会影响控件内部的子控件
        # self.setStyleSheet("backcolor:red")
        # self.setStyleSheet("backcolor:rgb(100, 200, 150)")

        QColorDialog.setCustomColor(4, QColor(200, 10, 40))
        cd = QColorDialog(QColor(100, 200, 150), self)
        cd.setWindowTitle("选择一个好看的颜色")

 静态方法:阻塞式的静态方法,会有一个返回值根据返回值获取到用户所选择的给定颜色。

获取到用户所显示的颜色:

使用的是静态方法,每次创建的颜色选择对话框都是全新的对象,不存在上次默认选择颜色是哪一个

        def test():
            color = QColorDialog.getColor(QColor(10, 20, 100), self, "选择颜色")
            palette = QPalette()
            palette.setColor(QPalette.Background, color)
            self.setPalette(palette)
            print(color)

        btn.clicked.connect(test)

 3、QColor信号:

 ①确定选择某个颜色才会发射的信号,②当前颜色发生改变时才会发射的信号。

        def test_():
            cd = QColorDialog(self)
            cd.setOptions(QColorDialog.NoButtons)
            cd.setWindowTitle("选择一个人生的颜色")

            def sel_color(color):
                palette = QPalette()
                palette.setColor(QPalette.ButtonText, color)
                btn.setPalette(palette)
            # 最终选择颜色确定时所发射的信号
            #cd.colorSelected.connect(sel_color)
            # 当前颜色发生改变时,所发射的信号
            cd.currentColorChanged.connect(sel_color)
            cd.show()
        btn.clicked.connect(test_)
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

。七十二。

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值