【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里有关于位置的属性,在尝试中出现问题,遂直接获取鼠标位置)
作者:盛夏光年ltk
本博客所有文章仅用于学习、研究和交流目的,欢迎非商业性质转载。
博主是利用学习、参考、实践、复制和粘贴等多种方式打造成自己的文章,如有帮助记得点赞!

浙公网安备 33010602011771号