PyQtGraph绘图布局小部件问题

4

我正在尝试在PyQt应用程序中使用PyQtGraph创建绘图布局。

我需要一行,其中包含两个绘图,第一个宽度为两列,第二个宽度为单个列。

阅读文档后,我认为以下类似代码可以实现:

# Create the PyQtGraph Plot area
self.view = pg.GraphicsLayoutWidget()
self.w1 = self.view.addPlot(row=1, col=1, colspan=2, title = 'Data1')
self.w2 = self.view.addPlot(row=1, col=3, colspan=1, title = 'Data2')

但是在这种情况下,我得到了两个图表区域,每个区域占窗口宽度的50%。
我做错了什么?
最好的问候,
Ben
1个回答

5
colspan 允许您让网格布局中的单元格跨越多个列。在某种程度上,它合并了多个网格单元格。在您的示例中,您最终得到一个由1行3列组成的网格。前两列显然每个都占总宽度的25%(或其中一个为0%,另一个为50%),第三列占用其他50%。简而言之:colspan 不允许您控制列的宽度。

那么,如何设置列或其内容的宽度?这是令人惊讶的难以找到的。似乎没有PyQtGraph方法直接处理此问题,必须使用底层的Qt类。

pg.GraphicsLayoutWidget 的中心项是 pg.GraphicsLayout。这又有一个名为 layout 的成员,其中包含一个 Qt QGraphicsGridLayout。这允许您使用以下方式操作列宽度:setColumnFixedWidthsetColumnMaximimumWidthsetColumnStretchFactor 等等。类似于这样的东西可能是您需要的:

self.view = pg.GraphicsLayoutWidget()
self.w1 = self.view.addPlot(row=0, col=0, title = 'Data1')
self.w2 = self.view.addPlot(row=0, col=1, title = 'Data2')

qGraphicsGridLayout = self.view.ci.layout
qGraphicsGridLayout.setColumnStretchFactor(0, 2)
qGraphicsGridLayout.setColumnStretchFactor(1, 1)

请查看QGraphicsGridLayout文档并进行一些实验。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接