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


