Python鼠标框选
时间: 2023-11-19 12:51:57 浏览: 192
要实现Python鼠标框选,可以使用PyQt5库中的QRubberBand类。具体实现步骤如下:
1. 导入PyQt5库中的QRubberBand类和QWidget类。
2. 创建一个继承自QWidget的自定义窗口类,并在其中重写mousePressEvent、mouseMoveEvent和mouseReleaseEvent三个方法。
3. 在mousePressEvent方法中记录鼠标按下的位置,并创建一个QRubberBand对象。
4. 在mouseMoveEvent方法中更新QRubberBand对象的大小和位置。
5. 在mouseReleaseEvent方法中获取QRubberBand对象的大小和位置,并进行相应的操作。
下面是一个简单的示例代码:
```python
from PyQt5.QtWidgets import QApplication, QWidget, QRubberBand
from PyQt5.QtCore import QPoint
class RubberBandDemo(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setGeometry(300, 300, 250, 150)
self.setWindowTitle('Rubber Band Demo')
self.show()
def mousePressEvent(self, event):
if event.button() == 1:
self.origin = QPoint(event.pos())
self.rubberBand = QRubberBand(QRubberBand.Rectangle, self)
self.rubberBand.setGeometry(QRect(self.origin, QSize()))
self.rubberBand.show()
def mouseMoveEvent(self, event):
if self.rubberBand.isVisible():
self.rubberBand.setGeometry(QRect(self.origin, event.pos()).normalized())
def mouseReleaseEvent(self, event):
if event.button() == 1:
self.rubberBand.hide()
selected_region = QRect(self.origin, event.pos()).normalized()
print(selected_region)
if __name__ == '__main__':
app = QApplication([])
demo = RubberBandDemo()
app.exec_()
```
阅读全文