Как убрать расстояние между виджетами в контейнере 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_())