pyqt5 qpainter清除
时间: 2023-10-02 17:03:44 浏览: 84
在PyQt5中,可以使用QPainter的clear()方法来清除绘图。下面是一个示例代码:
```python
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QWidget
from PyQt5.QtGui import QPainter, QBrush, QPen, QColor
from PyQt5.QtCore import Qt
class MyWidget(QWidget):
def __init__(self):
super().__init__()
def paintEvent(self, event):
painter = QPainter(self)
painter.setRenderHint(QPainter.Antialiasing)
# 绘制一个矩形
rect = self.rect().adjusted(10, 10, -10, -10)
brush = QBrush(QColor(255, 255, 255))
pen = QPen(QColor(0, 0, 0), 2)
painter.setBrush(brush)
painter.setPen(pen)
painter.drawRect(rect)
def clear(self):
# 清除绘图
rect = self.rect()
self.repaint(rect)
class MyWindow(QMainWindow):
def __init__(self):
super().__init__()
self.widget = MyWidget()
self.setCentralWidget(self.widget)
self.setGeometry(100, 100, 500, 500)
self.setWindowTitle('Clear Painter')
def keyPressEvent(self, event):
if event.key() == Qt.Key_C:
# 按下 "C" 键清除绘图
self.widget.clear()
if __name__ == '__main__':
app = QApplication(sys.argv)
window = MyWindow()
window.show()
sys.exit(app.exec_())
```
该代码创建了一个主窗口和一个自定义小部件。小部件绘制一个矩形。按下 "C" 键可以清除绘图。在clear()方法中,我们使用repaint()方法重绘整个小部件(即矩形)。这将清除之前绘制的任何东西。