Ребят помогите как сделать вот такое окно, с помощью QGridLayout()?
Хочу чтобы при растяжение окна верхняя зеленая бровь растягивалась только по горизонтали, не могу разобраться с qsizepolicy.
class MainWindow(QWidget):
def __init__(self):
super().__init__()
self.setupUI()
self.setForm()
def setupUI(self): # Форма главного окна
self.move(650, 250) # Отступы
self.setWindowTitle('КБЖУ') # Название программы
self.heading = QLabel('Звголовок', self) # Бровь программы
self.heading.setStyleSheet('background-color: rgb(255, 126, 14);') # Цыет фона брови
self.name = QLabel('Введите имя:', self)
self.nameInput = QLineEdit(self) # Ввод имени
self.btn_ok = QPushButton('Далее', self)
def setForm(self):
grid = QGridLayout() # Создаем Макет сетки
# добавляем в макет наши виджеты
grid.addWidget(self.heading, 0, 0, 1, 0)
grid.addWidget(self.name, 2, 0)
grid.addWidget(self.nameInput, 2, 1)
grid.addWidget(self.btn_ok, 3, 3)
grid.setSpacing(0) # Отступы между элементами
grid.setContentsMargins(0, 0, 0, 0) # Отступы от краев программы
self.setLayout(grid)
Ответы (1 шт):
Автор решения: S. Nick
→ Ссылка
void QGridLayout::setRowStretch(int row, int stretch)
Устанавливает коэффициент растяжения строки для растяжения. Первая строка - это номер 0.
Коэффициент растяжения относится к другим строкам в этой сетке. Ряды с более высоким коэффициентом растяжения занимают больше доступного места.
Коэффициент растяжения по умолчанию равен 0. Если коэффициент растяжения равен 0 и никакая другая строка в этой таблице не может расти вообще, строка все равно может расти.
layout.setRowStretch(0, 0)
layout.setRowStretch(1, 1)
import sys
from PyQt5.Qt import *
class MainWindow(QWidget):
def __init__(self):
super().__init__()
self.setupUI()
self.setForm()
def setupUI(self): # Форма главного окна
self.move(650, 250) # Отступы
self.setWindowTitle('КБЖУ') # Название программы
self.heading = QLabel('Звголовок', self) # Бровь программы
self.heading.setStyleSheet('background-color: rgb(255, 126, 14);')
self.name = QLabel('Введите имя:', self)
self.nameInput = QLineEdit(self) # Ввод имени
self.frame = QFrame()
self.flayout = QFormLayout(self.frame)
self.flayout.addRow(self.name, self.nameInput)
self.btn_ok = QPushButton('Далее', self)
def setForm(self):
grid = QGridLayout(self)
grid.addWidget(self.heading, 0, 0, 1, 4)
grid.addWidget(self.frame, 2, 1, 2, 2)
grid.addWidget(self.btn_ok, 4, 3)
grid.setSpacing(0) # Отступы между элементами
grid.setContentsMargins(0, 0, 0, 0) # Отступы от краев программы
grid.setRowStretch(0, 0)
grid.setRowStretch(1, 1)
grid.setRowStretch(2, 1)
grid.setRowStretch(3, 1)
if __name__ == '__main__':
app = QApplication(sys.argv)
w = MainWindow()
w.show()
sys.exit(app.exec_())
Update
import sys
from PyQt5.Qt import *
class MainWindow(QWidget):
def __init__(self):
super().__init__()
self.setupUI()
self.setForm()
def setupUI(self):
self.move(650, 250)
self.setWindowTitle('КБЖУ')
self.heading = QLabel('<h2>Звголовок</h2>', self) # +++
self.heading.setAlignment(Qt.AlignCenter) # +++
self.heading.setMinimumHeight(40) # +++
self.heading.setStyleSheet('background-color: rgb(255, 126, 14);')
self.name = QLabel('Введите имя:', self)
self.nameInput = QLineEdit(self)
self.frame = QFrame()
self.flayout = QFormLayout(self.frame)
self.flayout.addRow(self.name, self.nameInput)
self.btn_ok = QPushButton('Далее', self)
def setForm(self):
grid = QGridLayout(self)
grid.addWidget(self.heading, 0, 0, 1, 4)
grid.addWidget(self.frame, 2, 1, 2, 2)
grid.addWidget(self.btn_ok, 4, 3)
grid.setSpacing(0)
grid.setContentsMargins(0, 0, 0, 0)
grid.setRowStretch(0, 0)
grid.setRowStretch(1, 1)
grid.setRowStretch(2, 1)
grid.setRowStretch(3, 1)
if __name__ == '__main__':
app = QApplication(sys.argv)
w = MainWindow()
w.show()
sys.exit(app.exec_())
import sys
from PyQt5.Qt import *
class MainWindow(QWidget):
def __init__(self):
super().__init__()
self.setupUI()
self.setForm()
def setupUI(self): # Форма главного окна
self.move(650, 250) # Отступы
self.setWindowTitle('КБЖУ') # Название программы
self.heading = QLabel('Звголовок', self) # Бровь программы
self.heading.setStyleSheet('background-color: rgb(255, 126, 14);')
self.name = QLabel('Введите имя:', self)
self.nameInput = QLineEdit(self) # Ввод имени
self.frame = QFrame()
self.flayout = QFormLayout(self.frame)
self.flayout.addRow(self.name, self.nameInput)
self.frame.setStyleSheet('background-color: rgb(77, 126, 77);')
self.btn_ok = QPushButton('Далее', self)
self.frame2 = QFrame()
self.hlayout = QVBoxLayout(self.frame2)
self.hlayout.addWidget(self.btn_ok)
def setForm(self):
grid = QGridLayout(self)
grid.addWidget(self.heading, 0, 0, 1, 4)
grid.setRowStretch(1, 1)
grid.addWidget(self.frame, 2, 1, 1, 2)
grid.setRowStretch(3, 1)
# grid.addWidget(self.btn_ok, 4, 3)
grid.addWidget(self.frame2, 4, 3)
grid.setSpacing(0) # Отступы между элементами
grid.setContentsMargins(0, 0, 0, 10) # Отступы от краев программы
grid.setRowStretch(0, 0)
grid.setRowStretch(1, 1)
grid.setRowStretch(2, 1)
grid.setRowStretch(3, 1)
grid.setRowStretch(4, 0)
# grid.setRowStretch(5, 1)
if __name__ == '__main__':
app = QApplication(sys.argv)
w = MainWindow()
w.show()
sys.exit(app.exec_())


