Stack Overflow на русском Asked by MAXIM045 on December 4, 2020
Мой код создает вертикальный контейнер v_box
, он является главным контейнером окна и содержит в себе горизонтальный контейнер h_box
, который я покрасил в желтый цвет.
Контейнер h_box
содержит три виджета:
label_1
,btn
,label_2
.Надпись label_1
прижата к левому краю h_box
и должна оставаться там всегда.
Надпись label_2
прижата к правому краю h_box
и должна оставаться там всегда.
Кнопка btn
сейчас не имеет конкретного местоположения и я хочу это исправить. На картинке ниже показал расстояние между label_1
и btn
– d.
Мне нужно задать конкретную и постоянную величину этого расстояния в пикселях. Пожалуйста, подскажите как мне это сделать?
from PyQt5 import QtCore, QtWidgets
class MyWindow(QtWidgets.QWidget):
def __init__(self, parent = None):
super().__init__(parent)
v_box = QtWidgets.QVBoxLayout(self)
box = QtWidgets.QWidget()
box.setStyleSheet(box_qss)
box.setFixedHeight(50)
h_box = QtWidgets.QHBoxLayout(box)
v_box.addWidget(box)
label_1 = QtWidgets.QLabel('label_1')
h_box.addWidget(label_1)
btn = QtWidgets.QPushButton('btn')
btn.setStyleSheet(btn_qss)
btn.setFixedSize(40, 30)
h_box.addWidget(btn, alignment = QtCore.Qt.AlignLeft)
label_2 = QtWidgets.QLabel('label_2')
h_box.addWidget(label_2, alignment = QtCore.Qt.AlignRight)
box_qss = '''QWidget {
background-color: yellow;
border-radius: 5px;
}'''
btn_qss = '''QWidget {
background-color: white;
border-radius: 5px;
}'''
if __name__ == '__main__':
import sys
app = QtWidgets.QApplication(sys.argv)
window = MyWindow()
window.setWindowTitle(' ')
window.show()
sys.exit(app.exec_())
void QBoxLayout::addSpacing(int size)
Добавляет нерастяжимое пространство (QSpacerItem) с размером size в конец этого макета блока. QBoxLayout предоставляет поля и интервалы по умолчанию. Эта функция добавляет дополнительное пространство.
void QBoxLayout::addStretch(int stretch = 0)
Добавляет растягиваемое пространство (QSpacerItem) с нулевым минимальным размером и коэффициентом растяжения до конца этого макета блока.
from PyQt5 import QtCore, QtWidgets
class MyWindow(QtWidgets.QWidget):
def __init__(self, parent = None):
super().__init__(parent)
v_box = QtWidgets.QVBoxLayout(self)
box = QtWidgets.QWidget()
box.setStyleSheet(box_qss)
box.setFixedHeight(50)
h_box = QtWidgets.QHBoxLayout(box)
v_box.addWidget(box)
label_1 = QtWidgets.QLabel('label_1')
h_box.addWidget(label_1)
h_box.addSpacing(30) # +++
btn = QtWidgets.QPushButton('btn')
btn.setStyleSheet(btn_qss)
btn.setFixedSize(40, 30)
h_box.addWidget(btn) #, alignment = QtCore.Qt.AlignLeft)
h_box.addStretch(1) # +++
label_2 = QtWidgets.QLabel('label_2')
h_box.addWidget(label_2, alignment = QtCore.Qt.AlignRight)
box_qss = '''QWidget {
background-color: yellow;
border-radius: 5px;
}'''
btn_qss = '''QWidget {
background-color: white;
border-radius: 5px;
}'''
if __name__ == '__main__':
import sys
app = QtWidgets.QApplication(sys.argv)
window = MyWindow()
window.setWindowTitle(' ')
window.show()
sys.exit(app.exec_())
Correct answer by S. Nick on December 4, 2020
Get help from others!
Recent Answers
Recent Questions
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP