我正在尝试在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%。
我做错了什么?
最诚挚的问候,
本
答案 0 :(得分:4)
colspan
允许您让网格布局中的单元格跨越多列。我的方式是它合并多个网格单元格。在您的示例中,您最终得到一个1行乘3列的网格。显然,前两列的宽度分别为总数的25%(或者一个为0%,另一个为50%),第三列为另外50%。简而言之:colspan
不允许您控制列的宽度。
那么,如何设置列的宽度或其内容?这令人惊讶地难以找到。似乎没有直接处理这个问题的PyQtGraph方法,你必须使用底层的Qt类。
pg.GraphicsLayoutWidget
的核心项目为pg.GraphicsLayout
。这反过来又有一个包含Qt layout
的{{1}}成员。这允许您使用以下内容操纵列宽:QGraphicsGridLayout
,setColumnFixedWidth
,setColumnMaximimumWidth
等。这样的内容可能就是您所需要的:
setColumnStretchFactor
查看the documentation of QGraphicsGridLayout并进行一些实验。