GUI学习之二十五——QFontDialog学习总结

今天要讲的是QColorDialog对话框。

一.描述

  QColorDialog对话框是用来为用户提供颜色选择的对话框控件,和上一章的QFontDialog控件一样,是继承自QDialog这个基类。其使用方法和QFontDialog基本相同。

二.功能作用

  1.构造函数

  可以直接声明使用,也可以为其传递一个QColor对象作为默认颜色

color = QColor(30,40,50)
color_dialog =QColorDialog(color,self)

这里创建了一个RGB值为30,40,50的颜色对象,然后弹出看对话框就有了默认的颜色

  2.打开对话框

  打开对话框有三种常用方法:

QColorDialog.show()
QColorDialog.open()
QColorDialog.exec()

如果用show()方法话是可以发射colorSelected这个信号的

扫描二维码关注公众号,回复: 6841913 查看本文章
from PyQt5.Qt import *
import sys

class Window(QWidget):
    def __init__(self):
        super().__init__()
        self.UI_test()
        self.resize(800,500)


    def UI_test(self):
        btn = QPushButton('color',self)
        btn.move(50,50)
        btn.clicked.connect(self.fun)
        self.btn = btn
        pass

    def fun(self):
        color = QColor(30,40,50)
        color_dialog =QColorDialog(color,self)
        color_dialog.colorSelected.connect(self.change_color)
        color_dialog.show()

    def change_color(self,color):
        palette = QPalette()
        palette.setColor(QPalette.Background,color)
        self.setPalette(palette)
if __name__ == '__main__':
    app = QApplication(sys.argv)
    window = Window()
    window.show()
    sys.exit(app.exec_())
show方法弹出改变背景颜色

 而open()是直接传递个槽函数的,并且槽函数是没有参数传递的。只能手动获取。

from PyQt5.Qt import *
import sys

class Window(QWidget):
    def __init__(self):
        super().__init__()
        self.UI_test()
        self.resize(800,500)


    def UI_test(self):
        btn = QPushButton('color',self)
        btn.move(50,50)
        btn.clicked.connect(self.fun)
        self.btn = btn
        pass

    def fun(self):
        color = QColor(30,40,50)
        color_dialog =QColorDialog(color,self)
        color_dialog.colorSelected.connect(self.change_color)
        # color_dialog.show()
        color_dialog.open(self.change_color)
        self.col_dia = color_dialog

    def change_color(self):
        palette = QPalette()
        palette.setColor(QPalette.Background,self.col_dia.selectedColor())  #直接获取颜色值
        self.setPalette(palette)
if __name__ == '__main__':
    app = QApplication(sys.argv)
    window = Window()
    window.show()
    sys.exit(app.exec_())
open方式弹出改变背景色

exec是有个返回值的,只有点击确认键返回值为1。可以利用这个值来执行相对应的操作。

from PyQt5.Qt import *
import sys

class Window(QWidget):
    def __init__(self):
        super().__init__()
        self.UI_test()
        self.resize(800,500)


    def UI_test(self):
        btn = QPushButton('color',self)
        btn.move(50,50)
        btn.clicked.connect(self.fun)
        self.btn = btn
        pass

    def fun(self):
        color = QColor(30,40,50)
        color_dialog =QColorDialog(color,self)
        color_dialog.colorSelected.connect(self.change_color)
        # color_dialog.show()
        self.col_dia = color_dialog
        if self.col_dia.exec():     #利用exec的返回值
            self.change_color()
    def change_color(self):
        palette = QPalette()
        palette.setColor(QPalette.Background,self.col_dia.selectedColor())  #直接获取颜色值
        self.setPalette(palette)
if __name__ == '__main__':
    app = QApplication(sys.argv)
    window = Window()
    window.show()
    sys.exit(app.exec_())
exec方式弹出并改变北京市

  3.选项控制

QColorDialog.setOption(self, option: 'QColorDialog.ColorDialogOption', on: bool = ...)
QColorDialog.setOptions(self, options: typing.Union['QColorDialog.ColorDialogOptions', 'QColorDialog.ColorDialogOption'])
QColorDialog.testOption(self, option: 'QColorDialog.ColorDialogOption')    #——>bool
# type: 'QColorDialog.ColorDialogOption'
ShowAlphaChannel        # 允许选择Alpha分量(透明度)
NoButtons               # 取消确认、取消按钮
DontUseNativeDialog     # 不使用原生色彩对话框而选用Qt的标准色彩对话框

其中NoButtons的选项常常结合当前色彩改变来实时作用改变颜色

from PyQt5.Qt import *
import sys

class Window(QWidget):
    def __init__(self):
        super().__init__()
        self.UI_test()
        self.resize(800,500)


    def UI_test(self):
        btn = QPushButton('color',self)
        btn.move(50,50)
        btn.clicked.connect(self.fun)
        self.btn = btn
        pass

    def fun(self):
        color = QColor(30,40,50)
        color_dialog =QColorDialog(color,self)
        color_dialog.colorSelected.connect(self.change_color)
        color_dialog.setOptions(QColorDialog.NoButtons | QColorDialog.ShowAlphaChannel)  #取消按钮,开启透明度
        color_dialog.currentColorChanged.connect(self.change_color)      #当前颜色发生变化
        self.col_dia = color_dialog
        color_dialog.show()

    def change_color(self,col):
        palette = QPalette()
        palette.setColor(QPalette.Background,col)
        self.setPalette(palette)
if __name__ == '__main__':
    app = QApplication(sys.argv)
    window = Window()
    window.show()
    sys.exit(app.exec_())
实时改变背景色

  4.静态方法

  首先有个概念:标准颜色和自定义颜色。标准颜色是对话框提供的颜色(Basic Colors),而自定义颜色就是下面的用户定义的颜色(Custom Colors)。

自定义颜色一共用18组可以使用。顺序是从左上开使为0,0下面的是1,右边的是2。

QColorDialog.setCustomColor(index: int,color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor, QtGui.QGradient])
QColorDialog.setStandardColor(index: int, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor, QtGui.QGradient])

这两天代码是指定颜色格子里的颜色的,要注意的是这个必须是在对控件进行实例化以前定义。

from PyQt5.Qt import *
import sys

class Window(QWidget):
    def __init__(self):
        super().__init__()
        self.UI_test()


    def UI_test(self):
        QColorDialog.setCustomColor(1,QColor(50,60,70))
        cd = QColorDialog(self)
        cd.show()

        pass
if __name__ == '__main__':
    app = QApplication(sys.argv)
    window = Window()
    window.show()
    sys.exit(app.exec_())
设定自定义颜色

猜你喜欢

转载自www.cnblogs.com/yinsedeyinse/p/11135429.html