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

Горизонтальный контейнер box1 содержит в себе контейнеры box2 и box3. box2 содержит в себе кнопки с изображениями, а box3 имеет цвет, поэтому его границы хорошо видны.

Мне нужно, чтобы между элементами контейнера box2 и границей box3 не было расстояния, т.е. чтобы они вплотную прижимались друг к другу:

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

Вот картинка, которая находится на кнопках(picture.png). Такой узор нарисовал, чтобы было проще контролировать ситуацию:

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

Пожалуйста, подскажите, как мне убрать расстояние между элементами контейнера box2 и границей box3?

from PyQt5 import QtCore, QtGui, QtWidgets

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

        self.resize(200, 300)

        main_box = QtWidgets.QHBoxLayout(self) # Главный контейнер
        btn = QtWidgets.QPushButton('Main Box')
        main_box.addWidget(btn)

        box1 = QtWidgets.QHBoxLayout(spacing = 0) # Контейнер для box2 и box3
        main_box.addLayout(box1)

        box2 = QtWidgets.QVBoxLayout() # Контенер для кнопок с изображениями

        btn3 = QtWidgets.QPushButton('Button')
        label = QtWidgets.QLabel('Color Box', alignment = QtCore.Qt.AlignCenter)

        container = QtWidgets.QWidget()
        container.setStyleSheet("background-color: yellow;")
        box1.addWidget(container)
        box3 = QtWidgets.QVBoxLayout(container) # Цветной контейнер

        box1.addLayout(box2)

        box3.addWidget(label)
        box3.addWidget(btn3)

        for i in range(0, 3):
            btn = QtWidgets.QPushButton()
            btn.setIcon(QtGui.QIcon('picture.png'))
            btn.setIconSize(QtCore.QSize(60, 60))
            btn.setStyleSheet(qss)
            box2.addWidget(btn)
        box2.addStretch(1)


qss = '''QPushButton {
             border: none;
             margin: 0px;
             padding: 0px;
         }'''


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

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

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

Попробуйте установить

btn.setFixedSize(60, 60)

from PyQt5 import QtCore, QtGui, QtWidgets

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

        self.resize(200, 300)

        main_box = QtWidgets.QHBoxLayout(self) # Главный контейнер
        btn = QtWidgets.QPushButton('Main Box')
        main_box.addWidget(btn)

        box1 = QtWidgets.QHBoxLayout(spacing = 0) # Контейнер для box2 и box3
        main_box.addLayout(box1)

        box2 = QtWidgets.QVBoxLayout() # Контенер для кнопок с изображениями

        btn3 = QtWidgets.QPushButton('Button')
        label = QtWidgets.QLabel('Color Box', alignment = QtCore.Qt.AlignCenter)

        container = QtWidgets.QWidget()
        container.setStyleSheet("background-color: yellow;")
        box1.addWidget(container)
        box3 = QtWidgets.QVBoxLayout(container) # Цветной контейнер

        box1.addLayout(box2)

        box3.addWidget(label)
        box3.addWidget(btn3)

        for i in range(0, 3):
            btn = QtWidgets.QPushButton()
            btn.setFixedSize(60, 60)                              # <---
            btn.setIcon(QtGui.QIcon('picture.png'))
            btn.setIconSize(QtCore.QSize(60, 60))
            btn.setStyleSheet(qss)
            box2.addWidget(btn)
        box2.addStretch(1)


qss = '''QPushButton {
             border: none;
             margin: 0px;
             padding: 0px;
             background-color: blue;
         }'''


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

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

→ Ссылка