使用pyqt实现鼠标右键拖拽图片平移
时间: 2023-07-11 17:14:23 浏览: 125
PYQT5+图片拖拽
以下是使用PyQt实现鼠标右键拖拽图片平移的简单示例代码:
```python
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QPixmap
from PyQt5.QtWidgets import QApplication, QGraphicsScene, QGraphicsView
class ImageViewer(QGraphicsView):
def __init__(self, parent=None):
super(ImageViewer, self).__init__(parent)
# 创建场景
self.scene = QGraphicsScene(self)
self.setScene(self.scene)
# 加载图像
self.image = QPixmap('image.png')
# 添加图像到场景
self.image_item = self.scene.addPixmap(self.image)
# 开启拖拽模式
self.setDragMode(QGraphicsView.ScrollHandDrag)
# 重写鼠标按下事件
self.mousePressEvent = self.on_mouse_press_event
# 重写鼠标移动事件
self.mouseMoveEvent = self.on_mouse_move_event
def on_mouse_press_event(self, event):
# 如果是鼠标右键按下,则记录鼠标位置
if event.button() == Qt.RightButton:
self.last_mouse_pos = event.pos()
else:
super().mousePressEvent(event)
def on_mouse_move_event(self, event):
# 如果是鼠标右键移动,则计算偏移量并移动图像
if event.buttons() == Qt.RightButton:
offset = event.pos() - self.last_mouse_pos
self.image_item.moveBy(offset.x(), offset.y())
self.last_mouse_pos = event.pos()
else:
super().mouseMoveEvent(event)
if __name__ == '__main__':
app = QApplication([])
viewer = ImageViewer()
viewer.show()
app.exec_()
```
在这个示例中,我们重写了鼠标按下和鼠标移动事件。如果用户按下鼠标右键,则记录鼠标位置。在移动鼠标时,如果鼠标右键处于按下状态,则计算偏移量并移动图像。最后,我们将所有其他鼠标事件委托给父类处理。
阅读全文