跳至正文
View Categories

< 1 min read

主要内容 #

  • 下拉框的颜色填充
  • 画笔颜色的设置
  • 1. 下拉框的颜色填充 #

    首先需要一个列表存放QColor包中的所有颜色

    在__init__函数内声明一个属性,用于存储画笔的颜色
    程序如下:

            self.__colorList = QColor.colorNames()  #获取颜色列表

    为下拉框QComboBox填充QColor包中的所有颜色
    在类PaintImage中添加为控件QComboBox填充颜色的方法,程序如下:

        def FillColorList(self,comboBox):
            for color in self.__colorList:  #遍历颜色列表中的所有颜色
                pix = QPixmap(100,30)       #颜色块的大小,和QComboBox的大小要一致
                pix.fill(QColor(color))     #颜色填充
                comboBox.addItem(QIcon(pix),None)   #将填充的颜色块添加到下拉列表中
                comboBox.setIconSize(QSize(100,30)) #颜色块的大小,和QComboBox的大小要一致
                comboBox.setSizeAdjustPolicy(QComboBox.AdjustToContents)  #颜色块在下拉列表中的位置调整

    在__initUI函数中调用上述方法,程序如下:

    
            self.FillColorList(self.ComboBoxPenColor)  #传入的参数为QComboBox的对象ComboBoxPenColor

    至此,可以在颜色设置的下拉列表中选择不同的颜色

    2. 画笔颜色的设置 #

    选择不同的颜色,画笔在画布上的颜色没有任何改变。
    需要编写画笔颜色更改的功能
    在类PaintImage中添加更改笔画颜色的方法,程序如下:

    
        def ChangeColor(self):
            #改变画笔颜色
            self.change = True  #当前更新了画笔的设置
            self.updateXY()     #将画笔的位置更新为最初位置
            self.EraserButton.setChecked(False)   #将橡皮擦的选项设置为未勾选,否则无法改变颜色
    
            index = self.ComboBoxPenColor.currentIndex()  #获取选择的颜色在下拉框中的下标
            color = self.__colorList[index]    #通过所选择的当前下拉框的下标,以获取对应的颜色列表中的颜色
            self.__penColor = QColor(color)    #将画笔设置为当前颜色

    为QComboBox控件的currentIndexChanged方法连接到上述功能(即信号传递)
    在__initUI函数中添加该连接,程序如下:

    
            self.ComboBoxPenColor.currentIndexChanged.connect(self.ChangeColor)

    至此,画笔在画布上的颜色会根据颜色下拉列表中的选择而改变

    3. 小结 #

    • 将颜色列表放入下拉框中,并填充颜色
    • 画笔的颜色根据下拉框中所选择的颜色而改变

    习题 #