首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >pyqtgraph:如何拖动绘图项目

pyqtgraph:如何拖动绘图项目
EN

Stack Overflow用户
提问于 2014-03-17 14:34:12
回答 1查看 3.4K关注 0票数 1

当前正在尝试在pyqtgraph中绘制散点图,并尝试拖动绘图项目,但无法找到方法。我已经看过GraphicsScene sigMouseClicked,sigMouseMoved事件了。欢迎任何建议。如果我们需要更多的细节,请让我知道。

我正在使用的示例代码:

代码语言:javascript
复制
import pyqtgraph as pg
import numpy as np

w = pg.GraphicsWindow()
w.show()
x = [2,4,5,6,8];
y = [2,4,6,8,10];

pl = pg.PlotItem()
pl.plot(x, y, symbol='o')
w.addItem(pl)
EN

回答 1

Stack Overflow用户

发布于 2014-03-17 20:58:27

查看pyqtgraph/examples/CustomGraphItem.py。这里的方法是创建一个GraphItem子类,用于捕获鼠标拖动事件并移动鼠标下方的散点图点:

代码语言:javascript
复制
def mouseDragEvent(self, ev):
    if ev.button() != QtCore.Qt.LeftButton:
        ev.ignore()
        return

    if ev.isStart():
        # We are already one step into the drag.
        # Find the point(s) at the mouse cursor when the button was first 
        # pressed:
        pos = ev.buttonDownPos()
        pts = self.scatter.pointsAt(pos)
        if len(pts) == 0:
            ev.ignore()
            return
        self.dragPoint = pts[0]
        ind = pts[0].data()[0]
        self.dragOffset = self.data['pos'][ind] - pos
    elif ev.isFinish():
        self.dragPoint = None
        return
    else:
        if self.dragPoint is None:
            ev.ignore()
            return

    ind = self.dragPoint.data()[0]
    self.data['pos'][ind] = ev.pos() + self.dragOffset
    self.updateGraph()
    ev.accept()
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22448229

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档