主要内容 #
1. 画笔位置更新 #
每次对画笔进行设置时,比如设置画笔的颜色或者粗细,都需要将画笔的位置更新为初的位置。
画笔的最初位置被设置为画布之外,否则每次更新画笔,画布上都会留下画笔当前位置的痕迹。
在__init__函数内声明一个属性,用于判断当前是否更新了画笔的设置
程序如下:
self.change = True #True表示当前更新了笔画的设置
在类PaintImage中添加笔画位置初始化的方法,程序如下:
#初始位置为-60,因为该程序将最粗的笔画设置为60 #因此当笔画最粗时,也能保证画笔是在画布之外 def updateXY(self): self.x1 = -60 self.y1 = -60 self.x2 = -60 self.y2 = -60
2. 画笔粗细的设置 #
之前已经在界面上布局好了QSpinBox控件,用于显示画笔粗细的设置。
现在要实现具体的设置功能
在类PaintImage中添加画笔粗细设置的方法,程序如下:
def PenThicknessChange(self): self.__thickness = self.SpinBoxPenThick.value() #获得QSpinBox控件对象所设置的值 self.change = True #当前更新了画笔的设置 self.updateXY() #将画笔的位置更新为最初位置
为QSpinBox控件的valueChanged方法连接到上述功能(即信号传递)
在__initUI函数中添加该连接,程序如下:
self.SpinBoxPenThick.valueChanged.connect(self.PenThicknessChange)
至此,当改变QSpinBox控件的值时,可以在画布上绘制不同粗细的线条
3. 清空图像功能 #
在绘图程序的界面中,有一个“清空图像”的按钮
但这只是一个没有实现任何功能的按钮
以下程序实现该按钮的功能,即点击“清空图像”按钮时,画布恢复为白色
在类PaintImage中添加如下方法
def ClearImage(self): self.change = True #当前更新了画笔的设置 self.updateXY() #将画笔的位置更新为最初位置 self.__QPixmap = QPixmap(QSize(800,800)) #重新设置画布大小为800*800 self.__QPixmap.fill(Qt.white) #用白色填充画布
为QPushButton控件的clicked方法连接到上述功能(即信号传递)
在__initUI函数中添加该连接,程序如下:
self.ImageClearButton.clicked.connect(self.ClearImage)
至此,当点击“清空图像”按钮后,画布变为白色
4. 小结 #
- 当更改画笔或者清空画布时,需要将画笔的位置更新为初始位置,即在画布之外的位置
- 画笔粗细的功能编写
- 清空画布的功能编写
习题 #
- 无