我有一个 Qt5 窗口,其中有动态情况下的 pyqtgraph,即可以添加或修改绘图、轴、曲线。此外,图例可以显示和隐藏。由于用户还可以使用鼠标将图例拖动到不同的位置,因此我想存储其位置,并可能稍后恢复该位置。使用 LegendItems 的
setOffset
设置位置可以按预期工作,但无论实际位置如何,LegendItems 的 offset
属性始终返回相同的值。这是 MWE:
import numpy as np
import pyqtgraph as pg
win = pg.plot()
win.setWindowTitle('MWE legend offset')
c1 = win.plot([np.random.randint(0,8) for i in range(10)], pen='r', name='curve1')
legend = pg.LegendItem((80,60), offset=(70,20))
legend.setParentItem(win.graphicsItem())
legend.addItem(c1, 'curve1')
print(f"Before setting an offset: {legend.offset}") # Gives (70,20)
legend.setOffset([300,300])
print(f"After setting an offset: {legend.offset}") # Gives (70,20) as well
if __name__ == '__main__':
pg.exec()
知道如何获得真实的 LegendItem 位置吗?
用
legend.offset
替换 legend.opts['offset']
确实有效。
我认为开发人员忘记在
legend.offset
方法中更新 setOffset()
。