主要内容 #
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. 小结 #
- 将颜色列表放入下拉框中,并填充颜色
- 画笔的颜色根据下拉框中所选择的颜色而改变
习题 #
- 无