【问题标题】:ROI handles dont change their position while/after draggingROI 手柄在拖动时/之后不会改变它们的位置
【发布时间】:2018-02-23 15:44:10
【问题描述】:

嘿嘿

情况

我在 pyqtgraph 的视图框中有多个散点图。因为我想从中“剪掉一些东西”,所以我在情节的某处创建了一个PolyLineROI,并带有最初的三个句柄。当我开始将整个东西拖到它的目的地(并附加可能附加另一个句柄)时,句柄的位置仍然从它开始的位置开始。即使我自己拖动手柄,它们也会将它们的值更改为相对于它们的起始位置......这会导致选择错误的区域。

MWE

import pyqtgraph as pg

def roiMove():
    """Print the coordinates of the ROI."""
    print(roi.getState()['points'])

win = pg.GraphicsWindow()
vb = win.addViewBox()
# roi in rectangle shape
roi = pg.PolyLineROI([[1, 2], [1.5, 2], [1, 0]],
    closed=True,
    pen=pg.mkPen(color=(0, 201, 255, 255), width=3)
    )

# connect to printing function when moving something
# NOTE: when dragging the whole ROI the positions won't be updated
roi.sigRegionChanged.connect(roiMove)
vb.addItem(roi)
pg.QtGui.QApplication.exec_()

如果有人有想法那就太棒了:-)

干杯

【问题讨论】:

    标签: python pyqtgraph roi


    【解决方案1】:

    我在现实世界中得到了答案...而不是状态点,而是需要映射到父级的 SceneHandlePositions:

    MWE

    import pyqtgraph as pg
    
    def roiMove():
        """Print the coordinates of the ROI."""
        pts = roi.getSceneHandlePositions()
        print([roi.mapSceneToParent(pt[1]) for pt in pts])
    
    win = pg.GraphicsWindow()
    vb = win.addViewBox()
    # roi in triangle shape
    roi = pg.PolyLineROI([[1, 2], [1.5, 2], [1, 0]],
                closed=True,
                pen=pg.mkPen(color=(0, 201, 255, 255), width=3)
                    )
    
    # connect to printing function when moving something
    roi.sigRegionChanged.connect(roiMove)
    vb.addItem(roi)
    vb.setXRange(-5, 5)
    vb.setYRange(-5, 5)
    pg.QtGui.QApplication.exec_()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-10-17
      • 1970-01-01
      • 1970-01-01
      • 2013-08-14
      • 2022-01-13
      • 2022-11-02
      • 1970-01-01
      相关资源
      最近更新 更多