带PlotWidgetpyqtgraph的QGridLayout

2024-09-27 00:16:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我有3个^{}(来自pyqtgraph库)、obj1obj2和{},我试图将它们插入QGridLayout中。我想在一行中显示所有三个对象,但是obj1必须是obj2和{}的两倍大。在

我这样写道:

layout.addWIdget(obj1, 0, 0, 1, 2)
layout.addWidget(obj2, 0, 2, 1, 1)
layout.addWidget(obj3, 0, 3, 1, 1)

然而,从视觉上看,obj1要比obj2和{}小得多,它们的大小相同:

^{pr2}$

但是,如果我写下:

layout.addWIdget(obj1, 0, 0, 1, 1)
layout.addWidget(obj2, 0, 1, 1, 6)
layout.addWidget(obj3, 0, 7, 1, 6)

obj1看起来比仍然相同大小的obj2和{}大,这是预期的行为:

---------------------------------------------------
|          obj1           |    obj2   |    obj3   |
---------------------------------------------------

它似乎与addWidget的doc完全矛盾,因为我的第一个解决方案应该产生预期的行为,不是吗?在

编辑:代码片段

import pyqtgraph as qtg

obj1 = qtg.PlotWidget()
obj2 = qtg.PlotWidget()
obj3 = qtg.PlotWidget()

layout = QGridLayout()

layout.addWIdget(obj1, 0, 0, 1, 2)
layout.addWidget(obj2, 0, 2, 1, 1)
layout.addWidget(obj3, 0, 3, 1, 1)

box = QGroupBox()
box.setLayout(layout)
self.setCentralWidget(box)

Tags: 对象boxdoc视觉pyqtgraphlayoutobj2obj1
1条回答
网友
1楼 · 发布于 2024-09-27 00:16:17

当您使用voidQGridLayout::addWidget(QWidget* widget, int fromRow, int fromColumn, int rowSpan, int columnSpan, Qt::Alignment alignment = 0)时,rowSpan和columnSpan引用另一行或另一列,就像您刚刚给定的一行一样,不会应用rowSpan,例如,如果您添加了一个新行,则会得到以下结果:

obj1 = qtg.PlotWidget()
obj2 = qtg.PlotWidget()
obj3 = qtg.PlotWidget()

obj4 = qtg.PlotWidget()
obj5 = qtg.PlotWidget()
obj6 = qtg.PlotWidget()
obj7 = qtg.PlotWidget()

layout = QGridLayout()

layout.addWidget(obj1, 0, 0, 1, 2)
layout.addWidget(obj2, 0, 2, 1, 1)
layout.addWidget(obj3, 0, 3, 1, 1)
layout.addWidget(obj4, 1, 0, 1, 1)
layout.addWidget(obj5, 1, 1, 1, 1)
layout.addWidget(obj6, 1, 2, 1, 1)
layout.addWidget(obj7, 1, 3, 1, 1)

box = QGroupBox(self)
box.setLayout(layout)
self.setCentralWidget(box)

enter image description here

如果需要确定比例,则必须使用“拉伸”,在本例中setColumnStretch():

^{pr2}$

enter image description here

你可以通过QHBoxLayout获得同样的效果:

obj1 = qtg.PlotWidget()
obj2 = qtg.PlotWidget()
obj3 = qtg.PlotWidget()

layout = QHBoxLayout()

layout.addWidget(obj1, stretch=2)
layout.addWidget(obj2, stretch=1)
layout.addWidget(obj3, stretch=1)

box = QGroupBox(self)
box.setLayout(layout)
self.setCentralWidget(box)

相关问题 更多 >

    热门问题