可移动的QGraphicsLineItem边界框

时间:2016-04-18 09:21:27

标签: python pyqt4 pyqtgraph

我正在尝试将可拖动的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_()

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

我尝试了以下技巧: 1)

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

2)

line.setParentItem(w.plotItem.vb)

但是拖拽区问题仍然存在

2 个答案:

答案 0 :(得分:0)

您可以使用pyqtgraph中的LineSegmentRoi

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

答案 1 :(得分:0)

好的,这是解决方案。当我们使用QtGui.QGraphicsLineItem时:

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

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