跳至正文
View Categories

< 1 min read

主要内容 #

  • 画笔位置更新
  • 画笔粗细的设置
  • 清空图像功能
  • 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. 小结 #

    • 当更改画笔或者清空画布时,需要将画笔的位置更新为初始位置,即在画布之外的位置
    • 画笔粗细的功能编写
    • 清空画布的功能编写

    习题 #