Отображение большого изображения рядом с 3 меньшими изображениями - PullRequest
1 голос
/ 01 июня 2019

Я устанавливаю макет в PyQT5 и хочу, чтобы одно большое изображение с левой стороны отображалось рядом с 3 изображениями, которые составляют 1/3 высоты большого изображения (чтобы объединенные высоты меньшего изображения складываются до высоты большого изображения)

Вот код в классе Layout, который запускается и отображает графический интерфейс. Все изображения загружаются в методе 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)

Все средства обработки изображений жестко запрограммированы для тестирования, что будет учтено позже, но не являются частью этой проблемы.

Итак, я хочу что-то вроде следующего изображения (черные квадраты, представляющие изображение):

Wanted result

Но то, что я сейчас получаю, выглядит примерно так:

Current result

1 Ответ

3 голосов
/ 01 июня 2019

Если вы хотите получить следующую структуру:

┌---------┬---------┐
|         |         |
|         ├---------┤
|         |         |
|         ├---------┤
|         |         |
└---------┴---------┘

Затем необходимо проанализировать структуру, элемент слева начинается с (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)
# ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...