python代码用pyqt实现鼠标点击画框
时间: 2024-05-03 15:20:39 浏览: 101
很高兴回答这个问题。您可以使用以下代码片段来实现在 PyQt5 中使用鼠标点击绘制一个矩形框:
```
from PyQt5.QtCore import Qt, QPoint, QRect
from PyQt5.QtGui import QPainter, QPen
from PyQt5.QtWidgets import QWidget, QApplication
class DrawingWidget(QWidget):
def __init__(self):
super().__init__()
self.setMouseTracking(True)
self.start_pos = None
self.end_pos = None
def mousePressEvent(self, event):
if event.button() == Qt.LeftButton:
self.start_pos = event.pos()
def mouseMoveEvent(self, event):
if event.buttons() and Qt.LeftButton:
self.end_pos = event.pos()
self.update()
def paintEvent(self, event):
if self.start_pos and self.end_pos:
painter = QPainter(self)
pen = QPen(Qt.red)
pen.setWidth(2)
painter.setPen(pen)
rect = QRect(self.start_pos, self.end_pos)
painter.drawRect(rect)
if __name__ == '__main__':
app = QApplication([])
window = DrawingWidget()
window.show()
app.exec_()
```
在此代码片段中,DrawingWidget 类继承自 QWidget 类并重写了 mousePressEvent 、mouseMoveEvent 和 paintEvent 方法。当鼠标左键按下时,mousePressEvent 方法将开始坐标存储到 start_pos 变量中。当鼠标拖动时,mouseMoveEvent 方法将结束坐标存储到 end_pos 变量中并调用 update() 方法,该方法将强制执行 paintEvent 方法以更新窗口。paintEvent 方法将在窗口上绘制一个红色矩形。
阅读全文