Как убрать расстояние между виджетами в контейнере QVBoxLayout PyQt5

Пытаюсь убрать расстояние в контейнере между виджетами, но setSpacing(0) не помогает. Как я могу расставить кнопки в контейнере так же, как на фотографии? введите сюда описание изображения

from PyQt5.Qt import *
import sys


class Window(QWidget):
    def __init__(self, parent=None):
        QWidget.__init__(self, parent)

        self.setStyleSheet("background-color: rgb(35,35,35)")
        self.setMinimumSize(1000,500)

        self.top_bar = QFrame()
        self.top_bar.setStyleSheet("background-color: rgb(35,35,35);")
        self.top_bar.setFrameShadow(QFrame.Raised)
        self.top_bar.setFixedSize(920,30)

        self.content = QFrame()
        self.content.setStyleSheet("background-color: rgb(45,45,45);")
        self.content.setFrameShadow(QFrame.Raised)

        self.left_bar = QFrame()
        self.left_bar.setStyleSheet("background-color: rgb(35,35,35);")
        self.left_bar.setFrameShadow(QFrame.Raised)
        self.left_bar.setFixedSize(80,500)

        self.menu_button = QPushButton()
        self.menu_button.setStyleSheet("background-color: rgb(110, 192, 255);\
                                        border: 0px solid; font: 14pt; color: rgb(35,35,35);")
        self.menu_button.setText("Menu")


        self.page_1_button = QPushButton()
        self.page_1_button.setStyleSheet("QPushButton:hover { background-color: rgb(85,170,255) }\
                                          QPushButton:!hover { background-color: transparent; border: 0px solid; font: 11pt; color: rgb(255,255,255) }")
        self.page_1_button.setText("Page 1")

        self.page_2_button = QPushButton()
        self.page_2_button.setStyleSheet("QPushButton:hover { background-color: rgb(85,170,255) }\
                                          QPushButton:!hover { background-color: transparent; border: 0px solid; font: 11pt; color: rgb(255,255,255) }")
        self.page_2_button.setText("Page 2")

        self.vbox_1 = QVBoxLayout()

        self.vbox_1.addWidget(self.menu_button)
        self.vbox_1.addWidget(self.page_1_button)
        self.vbox_1.addWidget(self.page_2_button)
        
        self.left_bar.setLayout(self.vbox_1)

        self.vbox_2 = QVBoxLayout()
        self.vbox_2.addWidget(self.top_bar)
        self.vbox_2.addWidget(self.content)

        self.hbox = QHBoxLayout()
        self.hbox.addWidget(self.left_bar)
        self.hbox.addLayout(self.vbox_2)

        self.setLayout(self.hbox)

if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = Window()
    window.show()
    sys.exit(app.exec_())

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

Автор решения: Bitchdragon

Уже догадался сам, поэтому оставлю для потомков: c помощью метода addStretch(int) можно создать пустое пространство в контейнере. Но очень важно этот метод прописывать в правильном месте: Если он применен до добавления виджетов, то будет один результат, а если после, то другой.

from PyQt5.Qt import *
import sys


class Window(QWidget):
    def __init__(self, parent=None):
        QWidget.__init__(self, parent)

        self.setStyleSheet("background-color: rgb(35,35,35)")
        self.setMinimumSize(1000,500)

        self.top_bar = QFrame()
        self.top_bar.setStyleSheet("background-color: rgb(35,35,35);")
        self.top_bar.setFrameShadow(QFrame.Raised)
        self.top_bar.setFixedSize(920,50)

        self.content = QFrame()
        self.content.setStyleSheet("background-color: rgb(45,45,45);")
        self.content.setFrameShadow(QFrame.Raised)

        self.left_bar = QFrame()
        self.left_bar.setStyleSheet("background-color: rgb(35,35,35);")
        self.left_bar.setFrameShadow(QFrame.Raised)
        self.left_bar.setFixedSize(80,500)

        self.menu_button = QPushButton()
        self.menu_button.setStyleSheet("background-color: rgb(110, 192, 255);\
                                        border: 0px solid; font: 14pt; color: rgb(35,35,35)")
        
        self.menu_button.setText("Menu")
        self.menu_button.setMinimumSize(80,50)


        self.page_1_button = QPushButton()
        self.page_1_button.setStyleSheet("QPushButton:hover { background-color: rgb(85,170,255) }\
                                          QPushButton:!hover { background-color: transparent; border: 0px solid; font: 11pt; color: rgb(255,255,255) }")
        self.page_1_button.setText("Page 1")
        self.page_1_button.setMinimumSize(80, 50)

        self.page_2_button = QPushButton()
        self.page_2_button.setStyleSheet("QPushButton:hover { background-color: rgb(85,170,255) }\
                                          QPushButton:!hover { background-color: transparent; border: 0px solid; font: 11pt; color: rgb(255,255,255) }")
        self.page_2_button.setText("Page 2")
        self.page_2_button.setMinimumSize(80, 50)

        self.vbox_1 = QVBoxLayout()
        self.vbox_1.setSpacing(0)
        self.vbox_1.setContentsMargins(0,0,0,0)


        self.vbox_1.addWidget(self.menu_button)
        self.vbox_1.addWidget(self.page_1_button)
        self.vbox_1.addWidget(self.page_2_button)

        self.vbox_1.addStretch(0) #Вот этот красавец!

        self.left_bar.setLayout(self.vbox_1)

        self.vbox_2 = QVBoxLayout()
        self.vbox_2.setSpacing(0)
        self.vbox_2.setContentsMargins(0, 0, 0, 0)
        self.vbox_2.addWidget(self.top_bar)
        self.vbox_2.addWidget(self.content)

        self.hbox = QHBoxLayout()
        self.hbox.setSpacing(0)
        self.hbox.setContentsMargins(0, 0, 0, 0)
        self.hbox.addWidget(self.left_bar)
        self.hbox.addLayout(self.vbox_2)

        self.setLayout(self.hbox)


if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = Window()
    window.show()
    sys.exit(app.exec_())

→ Ссылка