Как добавить растяжимое пространство между элементами QGridLayout?
Мой код добавляет в контейнер box четыре виджета:
- Надпись
label; - Три кнопки -
btn1,btn2иbtn3.
box - это QGridLayout, и мне нужно добавить растяжимое пространство между его строками:
Пожалуйста, подскажите, как мне это сделать?
from PyQt5 import QtCore, QtWidgets, QtGui
class MyWindow(QtWidgets.QWidget):
def __init__(self, parent = None):
super().__init__(parent)
box = QtWidgets.QGridLayout(self)
label = QtWidgets.QLabel('Text')
box.addWidget(label, 0, 0, 1, 2, alignment=QtCore.Qt.AlignCenter)
btn1 = QtWidgets.QPushButton('Button 1')
box.addWidget(btn1, 1, 0)
btn2 = QtWidgets.QPushButton('Button 2')
box.addWidget(btn2, 1, 1)
btn3 = QtWidgets.QPushButton('Button 3')
box.addWidget(btn3, 2, 0, 1, 2)
if __name__ == '__main__':
import sys
app = QtWidgets.QApplication(sys.argv)
window = MyWindow()
window.setWindowTitle(' ')
window.show()
sys.exit(app.exec_())
Ответы (1 шт):
Автор решения: S. Nick
→ Ссылка
QGridLayout::setRowStretch(int row, int stretch)
Устанавливает коэффициент растяжения для строк. Первая строка номер 0.
from PyQt5 import QtCore, QtWidgets, QtGui
class MyWindow(QtWidgets.QWidget):
def __init__(self, parent = None):
super().__init__(parent)
box = QtWidgets.QGridLayout(self)
box.setRowStretch(0, 1)
label = QtWidgets.QLabel('Text')
box.addWidget(label, 1, 0, 1, 2, alignment=QtCore.Qt.AlignCenter)
box.setRowStretch(2, 1)
btn1 = QtWidgets.QPushButton('Button 1')
box.addWidget(btn1, 3, 0)
btn2 = QtWidgets.QPushButton('Button 2')
box.addWidget(btn2, 3, 1)
box.setRowStretch(4, 1)
btn3 = QtWidgets.QPushButton('Button 3')
box.addWidget(btn3, 5, 0, 1, 2)
box.setRowStretch(6, 1)
if __name__ == '__main__':
import sys
app = QtWidgets.QApplication(sys.argv)
window = MyWindow()
window.setWindowTitle(' ')
window.show()
sys.exit(app.exec_())

