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

159 pyqt小应用-画图 4

主要内容

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

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

    习题