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


