【问题标题】:How to Make a Clear Board Function for a Widget in pyqt5如何在pyqt5中为一个小部件制作一个清晰的板子功能
【发布时间】:2017-10-18 20:08:12
【问题描述】:

大家好,我正在使用 PyQt5 制作一个 gui,我在主窗口上集成了一个用于绘图的小部件,但我想使用一个按钮来清除用于绘图的小部件我正在使用此代码,但我不明白它有什么问题;它似乎不起作用,谢谢

class Drawer(QWidget):
    newPoint = pyqtSignal(QPoint)

    def __init__(self, parent=None):
        QWidget.__init__(self, parent)
        self.setAttribute(QtCore.Qt.WA_StaticContents)
        self.modified = False
        self.scribbling = False
        imageSize = QtCore.QSize(9500, 9500)
        h=400
        w=400
        self.image = QtGui.QImage()
        self.image=QtGui.QImage(w,h,QtGui.QImage.Format_RGB32)
        self.path = QPainterPath()   


    def setPenColor(self, newColor):
        self.myPenColor = newColor

    def setPenWidth(self, newWidth):
        self.myPenWidth = newWidth

    def clearImage(self):

        self.image.fill(QtGui.qRgb(255, 255, 255))  ## switch it to else 
        self.modified = True
        self.update()


    def paintEvent(self, event):
        painter = QPainter(self)

        painter.setPen(QColor(0, 0, 0))

        painter.setFont(QFont('Decorative', 10))
        painter.drawImage(event.rect(), self.image)
        painter.drawPath(self.path)

    def mousePressEvent(self, event):
        self.path.moveTo(event.pos())
        self.update()

    def mouseMoveEvent(self, event):
        self.path.lineTo(event.pos())
        self.newPoint.emit(event.pos())
        self.update()

    def sizeHint(self):
        return QSize(200, 200)

【问题讨论】:

    标签: python pyqt pyqt5


    【解决方案1】:

    清除图像时需要清除路径,否则paint函数只会重新绘制相同的东西。

    def clearImage(self):
        self.path = QPainterPath()   
        self.image.fill(QtGui.qRgb(255, 255, 255))  ## switch it to else 
        self.modified = True
        self.update()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-20
      • 1970-01-01
      • 2022-10-24
      • 2022-01-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多