【问题标题】:Movable QGraphicsLineItem bounding box可移动的 QGraphicsLineItem 边界框
【发布时间】:2016-08-09 22:53:09
【问题描述】:

我正在尝试将可拖动的 QtGui.QGraphicsLineItem 添加到 pyqtgraph.plotItem 中。

从 PyQt4 导入 QtCore、QtGui 将 pyqtgraph 导入为 pg

app = QtGui.QApplication([])

w = pg.PlotWidget()
w.show()

line = QtGui.QGraphicsLineItem()
line.setFlag(QtGui.QGraphicsItem.ItemIsMovable)
line.setPen(QtGui.QPen(QtGui.QColor(255, 0, 0), 2))
line.setLine(0, 0, 100, 100)

w.plotItem.addItem(line)

app.exec_()

但是,有几个问题: - 缩放绘图时线宽发生变化 - 拖动开始的区域包括整个矩形边界框(见下图)

我尝试了以下技巧: 1)

line.setFlag(QtGui.QGraphicsItem.ItemIgnoresTransformations)
w.plotItem.addItem(line)

2)

line.setParentItem(w.plotItem.vb)

但是拖拽区域问题依然存在

【问题讨论】:

    标签: python pyqt4 pyqtgraph


    【解决方案1】:

    您可以使用 pyqtgraph 中的 LineSegmentRoi

    line = pg.LineSegmentROI([0, 100], [0, 0], pen=(255, 0, 0))
    w.plotItem.addItem(line)
    

    【讨论】:

      【解决方案2】:

      好的,解决方案到此为止。当我们使用 QtGui.QGraphicsLineItem 时:

      1) 对于“绘图缩放时线宽变化”的问题, 使用 pen.setCosmetic(True) 或使用 pg.mkPen 创建笔

      2) 对于“拖动开始的区域包括整个矩形边界框(见下图)”问题, 使用 mouseDragEvent 而不是使用 line.setFlag(QtGui.QGraphicsItem.ItemIsMovable)

      【讨论】:

        猜你喜欢
        • 2017-05-01
        • 1970-01-01
        • 2019-07-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-12-08
        相关资源
        最近更新 更多