Как задать величину отступа по вертикали между контейнерами?

В главном контейнере main_box я создаю четыре пустых контейнера:

  • Один контейнер big_box высотой 200px
  • Три контейнера little_box(в цикле) высотой 50px

Я хочу выставить значения отступов по вертикали между этими контейнерами:

введите сюда описание изображения

H - это расстояние между big_box и самым верхним little_box. Оно должно быть постоянно и равно 40px.

L - это расстояние между контейнерами little_box. Оно должно быть постоянно и равно 20px.

Очень важно! -> При этом мне нужно оставить big_box вверху контейнера main_box.

Пожалуйста, помогите расположить виджеты в контейнере

from PyQt5 import QtCore, QtWidgets, QtGui

class MyWindow(QtWidgets.QWidget):
    def __init__(self, parent = None):
        super().__init__(parent)

        main_box = QtWidgets.QVBoxLayout(self)

        container = QtWidgets.QWidget()
        container.setStyleSheet('background: #1F252F;')
        container.setFixedHeight(200)
        big_box = QtWidgets.QHBoxLayout(container)
        main_box.addWidget(container, alignment = QtCore.Qt.AlignTop)

        for i in range(0, 3):
            container = QtWidgets.QWidget()
            container.setStyleSheet('background-color: #1F252F;')
            container.setFixedHeight(50)
            little_box = QtWidgets.QHBoxLayout(container)
            main_box.addWidget(container)


if __name__ == '__main__':
    import sys
    app = QtWidgets.QApplication(sys.argv)
    window = MyWindow()
    window.setWindowTitle(' ')
    window.show()
    sys.exit(app.exec_())

Ответы (1 шт):

Автор решения: S. Nick

Попробуйте так:

from PyQt5 import QtCore, QtWidgets, QtGui

class MyWindow(QtWidgets.QWidget):
    def __init__(self, parent = None):
        super().__init__(parent)

        main_box = QtWidgets.QVBoxLayout(self)

        container = QtWidgets.QWidget()
        container.setStyleSheet('background: #FF252F;')
        container.setFixedHeight(200)
        big_box = QtWidgets.QHBoxLayout(container)
        main_box.addWidget(container, alignment = QtCore.Qt.AlignTop)

        main_box.addSpacing(40)                                               # +++

        start = 0                                                             # +++
        end = 3                                                               # +++
        for i in range(start, end):           # (0, 3):
            container = QtWidgets.QWidget()
            container.setStyleSheet('background-color: #1F25FF;')
            container.setFixedHeight(50)
            little_box = QtWidgets.QHBoxLayout(container)
            main_box.addWidget(container)

            if i != end-1:                                                     # +++
                main_box.addSpacing(20)                                        # +++
        main_box.addStretch(1)                                                 # +++  


if __name__ == '__main__':
    import sys
    app = QtWidgets.QApplication(sys.argv)
    window = MyWindow()
    window.setWindowTitle(' ')
    window.show()
    sys.exit(app.exec_())

введите сюда описание изображения

→ Ссылка