我正在PyQT5中设置布局,我希望在左侧显示一个大图像,紧接在大图像高度的1/3的3个图像旁边显示(以便较小的组合高度图像加起来等于大图像的高度)
这是Layout类中的代码,该类启动并显示gui。所有图像均加载在createGridLayout方法中:
class Layout(QDialog):
def __init__(self):
super().__init__()
self.title = 'Imaging'
self.left = 10
self.top = 10
self.width = 800
self.height = 500
self.initUI()
def initUI(self):
self.setWindowTitle(self.title)
self.setGeometry(self.left, self.top, self.width, self.height)
self.createGridLayout()
windowLayout = QVBoxLayout()
windowLayout.setSpacing(0)
windowLayout.addWidget(self.horizontalGroupBox)
self.setLayout(windowLayout)
self.show()
def createGridLayout(self):
self.horizontalGroupBox = QGroupBox()
layout = QGridLayout()
# label is the large image in the grid
label = QLabel(self)
pixmap = QPixmap('snap_1,1.tif') # USE RELATIVE PATH TO IMAGE!
pixmap = pixmap.scaledToHeight(450)
label.setPixmap(pixmap)
# simplified version of the above for small images
label1 = QLabel(self)
label1.setPixmap(QPixmap('snap_1,1.tif').scaledToHeight(150))
label2 = QLabel(self)
label2.setPixmap(QPixmap('snap_1,2.tif').scaledToHeight(150))
label3 = QLabel(self)
label3.setPixmap(QPixmap('snap_1,3.tif').scaledToHeight(150))
# adding images to grid
layout.addWidget(label,1,0)
layout.addWidget(label1,0,1)
layout.addWidget(label2,1,1)
layout.addWidget(label3,2,1)
self.horizontalGroupBox.setLayout(layout)
所有成像材料都经过硬编码以进行测试,稍后将对此进行说明,但这不是此问题的一部分。
所以我想要的是下图所示的图像(黑框代表图像):
但是我现在得到的是这样的:
答案 0 :(得分:1)
如果要获取以下结构:
┌---------┬---------┐
| | |
| ├---------┤
| | |
| ├---------┤
| | |
└---------┴---------┘
然后,您必须分析结构,左侧的项从(0,0)开始,具有3行和1列,因此addWidget()方法必须通过(0,0,3,1)
# ...
# adding images to grid
layout.addWidget(label, 0, 0, 3, 1)
layout.addWidget(label1, 0, 1)
layout.addWidget(label2, 1, 1)
layout.addWidget(label3, 2, 1)
# ...