QT6 настройка окна
Компоновщики (Layouts).
Нужны для автоматического упорядочивания и изменения размеров виджетов при изменении размера окна. Без Layouts виджеты имеют фиксированные позиции и размеры. Импортируются все типы компоновщиков через
from PyQt6.QtWidgets import QHBoxLayout
Типы Layouts в Qt Designer
| Vertical Layout (Вертикальный компоновщик) | Располагает виджеты сверху вниз в столбик.
|
| Horizontal Layout (Горизонтальный компоновщик) | Располагает виджеты слева направо в строку. |
| Grid Layout (Сеточный компоновщик) | Располагает виджеты в таблице (строках и столбцах).
|
| Form Layout (Формовый компоновщик) | Идеален для форм (метка + поле ввода). Располагает виджеты в две колонки: labels слева, поля справа. |
Базовый подход:
- Перетащите виджеты на форму
- Выделите несколько виджетов (зажав Ctrl)
- Нажмите правой кнопкой → "Lay out" → Выберите нужный тип
- Или используйте панель инструментов сверху (кнопки с иконками Layouts)
Вложенные Layouts:
Main Vertical Layout
├── Horizontal Layout (для кнопок)
│ ├── Кнопка "Открыть"
│ ├── Кнопка "Сохранить"
│ └── Кнопка "Выход"
└── Text Edit (занимает оставшееся пространство)
Растяжения (Stretch):
В коде: layout.addStretch()
В Designer: есть специальный виджет "Horizontal Spacer" / "Vertical Spacer"
Выравнивание: В Property Editor настраивается
- layoutStretch — пропорции растяжения
- alignment — выравнивание содержимого
- spacing — расстояние между виджетами
- margin — отступ от краев
Для управления классом окна, класс создается, затем настраиваются нужные свойства
from PyQt6.QtWidgets import QApplication, QWidget
from PyQt6.QtGui import QIcon
import sys
class Window(QWidget):
def __init__(self):
super().__init__()
self.setGeometry(200,200, 700, 400)
app = QApplication(sys.argv)
window = Window()
window.show()
sys.exit(app.exec())
Свойства:
self.setWindowIcon(QIcon('pyqt6lessons\images\python.png'))
self.setStyleSheet('background-color:green')
self.setWindowOpacity(0.5)
| Свойство | Применение |
| Размеры окна |
self.setGeometry(x,y, height, width) self.setGeometry(200,200, 700, 400) |
| Заголовок окна | self.setWindowTitle("Python GUI Development") |