Как убрать расстояние между элементами в QVBoxLayout?

В вертикальный контейнер box2 я добавляю 3 кнопки. Мне нужно избавиться от расстояния между ними:

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

Пытался передать параметр spacing = 0, но, как я понял, он убирает только горизонтальное расстояние. Пожалуйста, подскажите, как можно решить мою проблему?

from PyQt5 import QtCore, QtGui, QtWidgets

class MyWindow(QtWidgets.QWidget):
    def __init__(self, *args, **kwargs):
        super(MyWindow, self).__init__(*args, **kwargs)

        self.resize(100, 200)

        main_box = QtWidgets.QHBoxLayout(self)

        btn = QtWidgets.QPushButton('Button')
        main_box.addWidget(btn)

        box2 = QtWidgets.QVBoxLayout(spacing = 0)   # <---
        main_box.addLayout(box2)

        for i in range(0, 3):
            btn = QtWidgets.QPushButton('Button')
            box2.addWidget(btn)


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

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

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

QBoxLayout::addStretch(int stretch = 0)

Добавляет растягиваемое пространство (QSpacerItem) с нулевым минимальным размером и коэффициентом растяжения растягивания до конца этого макета блока.


from PyQt5 import QtCore, QtGui, QtWidgets

class MyWindow(QtWidgets.QWidget):
    def __init__(self, *args, **kwargs):
        super(MyWindow, self).__init__(*args, **kwargs)

        self.resize(100, 200)

        main_box = QtWidgets.QHBoxLayout(self)

        btn = QtWidgets.QPushButton('Button')
        main_box.addWidget(btn)

        box2 = QtWidgets.QVBoxLayout(spacing = 0)
        box2.addStretch(1)                                 # <---

        main_box.addLayout(box2)

        for i in range(0, 3):
            btn = QtWidgets.QPushButton('Button')
            box2.addWidget(btn)
        box2.addStretch(1)                                 # <---


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

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


Update

Обратите внимание, я переименовал левую кнопку Button !, а кнопкам Button применил стиль.

from PyQt5 import QtCore, QtGui, QtWidgets

class MyWindow(QtWidgets.QWidget):
    def __init__(self, *args, **kwargs):
        super(MyWindow, self).__init__(*args, **kwargs)

        self.resize(100, 200)

        main_box = QtWidgets.QHBoxLayout(self)

        btn = QtWidgets.QPushButton('Button !')
        main_box.addWidget(btn)

        box2 = QtWidgets.QVBoxLayout(spacing = 0)

        box2.addStretch(1)                                 # <---

        main_box.addLayout(box2)

        for i in range(0, 3):
            btn = QtWidgets.QPushButton('Button')
            box2.addWidget(btn)
        box2.addStretch(1)                                 # <---


qss ='''
QPushButton[text="Button"] {
    background-color: #999; 
    font-weight: bold;
    font-size: 15px;
}
'''        

if __name__ == '__main__':
    import sys
    app = QtWidgets.QApplication(sys.argv)
    app.setStyleSheet(qss)
    w = MyWindow()
    w.show()
    sys.exit(app.exec_())

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

→ Ссылка