PyQtGraph图形布局小部件问题

时间:2016-04-27 11:59:44

标签: python pyqt pyqtgraph

我正在尝试在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%。

我做错了什么?

最诚挚的问候,

1 个答案:

答案 0 :(得分:4)

colspan允许您让网格布局中的单元格跨越多列。我的方式是它合并多个网格单元格。在您的示例中,您最终得到一个1行乘3列的网格。显然,前两列的宽度分别为总数的25%(或者一个为0%,另一个为50%),第三列为另外50%。简而言之:colspan不允许您控制列的宽度。

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

pg.GraphicsLayoutWidget的核心项目为pg.GraphicsLayout。这反过来又有一个包含Qt layout的{​​{1}}成员。这允许您使用以下内容操纵列宽:QGraphicsGridLayoutsetColumnFixedWidthsetColumnMaximimumWidth等。这样的内容可能就是您所需要的:

setColumnStretchFactor

查看the documentation of QGraphicsGridLayout并进行一些实验。