Python旧版课程库
Python第 05 期 - 应用查看课程总览

160 pyqt小应用-画图 5

主要内容

  • 下拉框的颜色填充
  • 画笔颜色的设置
  • 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. 小结

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

    习题