【pyqtgraph】pyqtgraph可移动竖线LineSegmentROI的拖拽事件相关

情景

Python+PyQt+pyqtgraph读取数据绘图,并在图像上添加了LineSegmentROI带handle的竖线(hanlde是为了RectROI的拖动),现要实现竖线可以直接拖动,并在拖动后恢复到原来的纵方向位置,只改变拖动的横方向位置。

实现

生成竖线

官方文档是这样写的:
LineSegmentROI(positions=(None, None), pos=None, handles=(None, None), **args)
参数什么的就不具体说了,生成一条可移动的直线只需要传入起点终点坐标和movable参数即可。

import pyqtgraph as pg
self.line = pg.LineSegmentROI(([0, 0], [0, 1), movable=True)

拖拽事件

# 取消handle的拖拽事件
for handle in self.line.getHandles():
	handle.mouseDragEvent = self.disable_drag_event()

def disable_drag_event(self, ev):
	return

# 重写竖线的拖拽事件
line.mouseDragEvent = new_drag_event()

def new_drag_event(self, ev):
	self.line.mouseDragHandler.mouseDragEvent(ev)  # 默认事件,需要重新实现
	finish = ev.finish  # 判断拖拽结束
	pos = self.get_mouse_pos()  # 获取鼠标当前位置(ev里有关于位置的属性,在尝试中出现问题,遂直接获取鼠标位置) 
	
posted @ 2022-02-15 14:30  盛夏光年ltk  阅读(407)  评论(0)    收藏  举报