PyQtGraph 0.10.0:PlotItem 的自动范围尝试缩放 TextItem 并崩溃



从 PyQtGraph 的 0.10.0 版本开始,我在绘图中的文本项方面遇到了问题: 我有一个启用了自动缩放的图表(绘图项(和一个文本项。在某些情况下,自动缩放会尝试缩放不可缩放的文本项。图表一次又一次地重新缩放。 在以下情况下会发生这种情况:

  1. 绘制的曲线没有高度或
  2. 窗口高度减小,直到文本不再适合。

在我看来,这个问题在 PyQtGraph 的 0.9.10 版本中不存在。

案例 1 的示例:

import PySide
from pyqtgraph.Qt import QtGui, QtCore
import numpy as np
import pyqtgraph as pg
app = QtGui.QApplication([])
win = pg.GraphicsWindow(title="auto scaling bug when having a TextItem")
win.resize(1000,500)
win.setWindowTitle("auto scaling bug when having a TextItem")
p1 = win.addPlot(title="Plot with TextItem", y=np.zeros(10))
#p1.plot(y=[100]*10)
ti = pg.TextItem(text="My TextItem", color='r', anchor=(0.0, 1.0), angle=90)
p1.addItem(ti)
ti.setPos(0, 0)
p1.enableAutoRange('y', True)
## 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_()

案例 2 的示例:

import PySide
from pyqtgraph.Qt import QtGui, QtCore
import numpy as np
import pyqtgraph as pg
app = QtGui.QApplication([])
win = pg.GraphicsWindow(title="auto scaling bug when having a TextItem")
win.resize(1000,150)
win.setWindowTitle("auto scaling bug when having a TextItem")
p1 = win.addPlot(title="Plot with TextItem", y=np.zeros(10))
p1.plot(y=[100]*10)
ti = pg.TextItem(text="My TextItem", color='r', anchor=(0.0, 1.0), angle=90)
p1.addItem(ti)
ti.setPos(0, 0)
p1.enableAutoRange('y', True)
## 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_()

有没有人知道(除了回到版本 0.9.10(? 提前谢谢你!

哦,我自己找到了解决方案:addItem方法允许选项ignoreBounds。当我添加 TextItem 并将此选项设置为True时,自动缩放将起作用:

p1.addItem(ti, ignoreBounds = True)

很抱歉在调试前询问。

最新更新