<p>一种可能的解决方案是覆盖ArrowItem的绘制方法并移动qpaiter:</p>
<pre><code>import numpy as np
from pyqtgraph.Qt import QtGui, QtCore
import pyqtgraph as pg
class MyArrowItem(pg.ArrowItem):
def paint(self, p, *args):
p.translate(-self.boundingRect().center())
pg.ArrowItem.paint(self, p, *args)
app = QtGui.QApplication([])
w = QtGui.QMainWindow()
p = pg.PlotWidget()
p.showGrid(x = True, y = True, alpha = 0.3)
w.show()
w.resize(640, 480)
w.setCentralWidget(p)
w.setWindowTitle('pyqtgraph example: Arrow')
a = pg.ArrowItem(angle=-160, tipAngle=60, headLen=40, tailLen=40, tailWidth=20, pen={'color': 'w', 'width': 3}, brush='r')
b = MyArrowItem(angle=-160, tipAngle=60, headLen=40, tailLen=40, tailWidth=20, pen={'color': 'w', 'width': 3})
a.setPos(10,0)
b.setPos(10,0)
p.addItem(a)
p.addItem(b)
## Start Qt event loop unless running in interactive mode or using pyside.
if __name__ == '__main__':
import sys
if (sys.flags.interactive != 1) or not hasattr(QtCore, 'PYQT_VERSION'):
QtGui.QApplication.instance().exec_()
</code></pre>
<p>如下图所示,红色箭头是默认的<code>ArrowItem</code>,蓝色箭头是偏移量,两者都位于与绘图相同的位置。在</p>
<p><a href="https://i.stack.imgur.com/7LmfS.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/7LmfS.png" alt="enter image description here"/></a></p>
<p><strong>更新:</strong></p>
<p>这个问题是由使用默认变换中心旋转用作坐标中心的项的方法引起的,也就是说(0,0),我们必须移动它:</p>
^{pr2}$