pyqt5 鼠标悬浮,显示悬浮处坐标的为中心的矩形图片悬浮在当前页面上
时间: 2024-12-17 13:51:35 浏览: 8
PyQt6鼠标标点示例程序 QLabel图片上获取鼠标坐标并显示红点
在PyQt5中,要实现鼠标悬浮时显示一个包含悬浮点坐标信息的中心矩形图片,你可以使用`QGraphicsView`和`QGraphicsScene`结合`QGraphicsPixmapItem`来创建这个效果。首先,你需要在图形界面中设置一个场景,然后添加一个可拖动的图像,并监听鼠标事件来获取坐标。以下是大致步骤:
1. 导入所需的库:
```python
from PyQt5.QtWidgets import QApplication, QWidget
from PyQt5.QtGui import QPixmap, QPainter, QImage, QPen
from PyQt5.QtCore import Qt, QPointF, QRectF, QTimer
```
2. 创建一个`GraphicsView`作为容器:
```python
class HoverImage(QWidget):
def __init__(self):
super().__init__()
self.view = QGraphicsView(self)
self.scene = QGraphicsScene(self.view)
# 初始化图像和矩形大小
self.image_path = 'your_image_path.png'
self.rect_size = 100 # 悬浮框尺寸
# 添加图片到场景
pixmap_item = QGraphicsPixmapItem(QPixmap(self.image_path))
self.scene.addItem(pixmap_item)
# 设置视口大小
self.view.setScene(self.scene)
self.view.setFixedSize(self.rect_size * 2, self.rect_size * 2)
```
3. 实现鼠标移动和更新悬浮框的功能:
```python
def update_rectangle_at_point(self, pos):
x, y = pos.x(), pos.y()
rectangle_pos = QPointF(x - (self.rect_size // 2), y - (self.rect_size // 2))
self.scene.removeItem(self.rectangle)
self.rectangle = QGraphicsRectItem(rectangle_pos, QRectF(0, 0, self.rect_size, self.rect_size),
self.scene)
self.rectangle.setPen(QPen(Qt.red, 2))
self.scene.addItem(self.rectangle)
# 添加鼠标移到事件处理器
def mouseMoveEvent(self, event):
self.update_rectangle_at_point(event.pos())
# ...其他窗口初始化和布局设置...
```
4. 使用定时器确保实时更新:
```python
timer = QTimer(self)
timer.timeout.connect(lambda: update_rectangle_at_point(self.mapToScene(self.cursor().pos())))
timer.start(1) # 更新频率,单位ms
```
现在当你将这个`HoverImage`类放在窗体里,并运行它,鼠标悬浮在图片上时,会有一个红色的矩形框跟随鼠标位置,显示当前位置。
阅读全文