移动到 QGraphicsView 时创建没有窗口打开和关闭的 pyqtgraph 图
Posted
技术标签:
【中文标题】移动到 QGraphicsView 时创建没有窗口打开和关闭的 pyqtgraph 图【英文标题】:Create pyqtgraph plot without window opening and closing when moved to QGraphicsView 【发布时间】:2021-10-02 19:28:29 【问题描述】:我正在尝试为 Pyqt 应用程序创建一个折线图,它本身可以正常工作,但我很恼火的是它会在瞬间打开一个窗口,然后关闭,并且绘图移动到 Qt QGraphicsView。我已经搜索了解决方案,但似乎找不到任何有效的答案。
def lineChartTest(self):
x = np.array(list(range(0, 10)))
y = np.array([3, 7, 5, 11, 8, 13, 9, 16, 15, 12])
x_smooth = np.linspace(x.min(), x.max(), 300)
spl = make_interp_spline(x, y, k=3)
y_smooth = spl(x_smooth)
plot = pg.plot()
plot.setGeometry(0, 0, 1007, 500)
plot.setLabel('bottom', 'X-axis Values')
plot.setLabel('left', 'Y-axis Values')
plot.setXRange(0, 10)
plot.setYRange(0, 20)
plot.setTitle("Test pyqtgraph")
plot.setBackground('1E1B44')
line = plot.plot(x_smooth, y_smooth, pen=pg.mkPen('E42AFF', width=2))
plot.addLegend()
self.scene.addWidget(plot)
这是我目前用来创建绘图的代码。
【问题讨论】:
尝试删除plot.show()
。
我试过了,但很遗憾没用。
@TroyB。请提供minimal reproducible example
【参考方案1】:
plot()
函数在返回之前自动显示 PlotWidget(请参阅sources),因此在添加到视图之前它会短暂显示为***窗口。
由于您没有向plot()
添加任何参数,因此您实际上并不需要该函数,您只需创建一个新的 PlotWidget 实例并将其添加到视图中:
def lineChartTest(self):
# ...
plot = pg.PlotWidget()
# ...
另一方面,PlotWidget已经是一个 QGraphicsView,因此将视图添加到另一个视图可能没有多大意义。考虑使用 PlotWidget 代替 QGraphicsView,并向其中添加 PlotItems。
【讨论】:
谢谢!这很棒以上是关于移动到 QGraphicsView 时创建没有窗口打开和关闭的 pyqtgraph 图的主要内容,如果未能解决你的问题,请参考以下文章