
Qt Designer предоставляет визуальный интерфейс для проектирования оконных приложений на Python с использованием PyQt или PySide. Этот инструмент позволяет создавать окна с кнопками, полями ввода, таблицами и другими виджетами без написания кода вручную, сокращая время на разработку интерфейса.
При работе с Qt Designer важно правильно настроить проект: выбрать подходящий тип окна, задать фиксированные размеры или параметры масштабирования, а также определить родительские связи между виджетами. Эти шаги напрямую влияют на корректность отображения и функциональность создаваемого интерфейса.
После проектирования окна следует сгенерировать Python-код через встроенный конвертер .ui-файлов. Этот код можно подключить к логике приложения, назначить обработчики сигналов и слотов для кнопок и других элементов управления. Неправильная генерация или игнорирование структуры сигналов часто приводит к сбоям при запуске окна.
В данном руководстве представлены точные действия, начиная с установки Qt Designer и настройки среды разработки, до запуска готового окна и устранения типичных ошибок. Следуя этим шагам, можно создавать работоспособные графические интерфейсы с предсказуемым поведением элементов.
Установка Qt Designer и подготовка среды

Для запуска Qt Designer необходимо установить пакет Qt версии 6 или выше. На официальном сайте Qt доступен установщик для Windows, macOS и Linux. Рекомендуется выбрать установку через Qt Online Installer, так как он позволяет выбрать компоненты: Qt Designer, Qt Creator и нужные версии Qt для Python.
После установки необходимо убедиться, что Qt Designer добавлен в системный PATH. На Windows путь обычно C:\Qt\<версия>\Tools\QtDesigner, на macOS и Linux – /usr/local/Qt/<версия>/bin. Добавление в PATH упрощает запуск программы из командной строки и интеграцию с IDE.
Для работы с Python важно установить PyQt6 или PySide6. Установка выполняется через pip: pip install PyQt6 или pip install PySide6. После установки необходимо проверить корректность версии Python и соответствие библиотеки Qt: команды python -m PyQt6.uic или python -m PySide6uic должны запускаться без ошибок.
Рекомендуется создать отдельное виртуальное окружение Python для каждого проекта. Это позволяет изолировать зависимости, избегать конфликтов версий и сохранять стабильность среды при работе с несколькими проектами Qt Designer.
Создание нового проекта и выбор типа окна

Для начала работы в Qt Designer необходимо создать новый проект через меню File → New Form. В открывшемся окне выбирается тип формы, который определяет базовую структуру окна: Main Window для стандартного приложения с меню и тулбарами, Dialog для всплывающих окон с ограниченным набором элементов, Widget для простых пользовательских интерфейсов без встроенных компонентов.
Выбор типа окна влияет на доступные свойства и шаблоны виджетов. Например, Main Window автоматически содержит центральный виджет и области для меню, тулбара и статуса, тогда как Dialog требует ручного добавления кнопок управления и компоновки. Widget подходит для кастомных окон или компонентов, которые будут включены в другие формы.
При создании нового окна рекомендуется сразу задать имя файла и директорию проекта, чтобы сохранить структуру и облегчить интеграцию с Python-кодом. Имя окна не должно содержать пробелов и спецсимволов, так как оно станет именем класса при генерации кода.
После выбора типа окна важно настроить базовые параметры: размеры окна, политику масштабирования и минимальные ограничения по ширине и высоте. Эти настройки обеспечивают корректное отображение элементов на разных разрешениях экрана и предотвращают искажения интерфейса при изменении размеров окна пользователем.
Настройка размеров и свойств главного окна

После создания формы в Qt Designer необходимо задать размеры окна и его поведение при изменении размера. Основные параметры задаются в разделе Property Editor. Для точного позиционирования виджетов используется Layout, который автоматически адаптирует элементы при изменении ширины и высоты окна.
Рекомендуется установить минимальные и максимальные размеры окна, чтобы предотвратить сжатие интерфейса до непригодных размеров и избыточное растяжение. Эти параметры задаются в полях minimumSize и maximumSize в пикселях.
Для быстрого обзора свойств окна удобно использовать таблицу:
| Свойство | Описание | Рекомендованное значение |
|---|---|---|
| width | Ширина окна при запуске | 800–1024 px |
| height | Высота окна при запуске | 600–768 px |
| minimumSize | Минимальные размеры окна | 640×480 px |
| maximumSize | Максимальные размеры окна | 1920×1080 px |
| windowTitle | Название окна, отображаемое в заголовке | Указать понятное название проекта |
| toolTip | Подсказка при наведении на окно | По необходимости |
Дополнительно стоит проверить свойство sizePolicy для центрального виджета: оно определяет, как элементы растягиваются горизонтально и вертикально. Для большинства окон оптимальна комбинация Preferred по ширине и Preferred по высоте.
Добавление виджетов и элементов управления
В Qt Designer добавление виджетов выполняется через Widget Box. Для стандартного интерфейса достаточно использовать QPushButton, QLabel, QLineEdit, QComboBox и QTableWidget. Каждый виджет помещается на центральный виджет окна методом перетаскивания.
После размещения виджетов необходимо настроить их свойства в Property Editor. Для кнопок важно задать objectName и text, для полей ввода – placeholderText и maxLength. Для таблиц следует определить количество строк и столбцов и задать horizontalHeaderLabels.
Рекомендуется использовать компоновку (Layout) для группы виджетов. Например, Vertical Layout для вертикального расположения кнопок или Grid Layout для сетки элементов. Это гарантирует сохранение пропорций при изменении размеров окна.
При добавлении интерактивных элементов стоит сразу проверять взаимодействие с сигналами и слотами. Даже если логика будет реализована позже, назначение clicked для кнопок или textChanged для полей ввода позволяет избежать ошибок при последующей генерации Python-кода.
Настройка сигналов и слотов для кнопок и полей
Рекомендации по настройке сигналов и слотов:
- Для кнопок (QPushButton) используйте сигнал clicked(). Обычно он соединяется с функцией, выполняющей действие по нажатию.
- Для полей ввода (QLineEdit) применяйте textChanged() или editingFinished(), чтобы реагировать на изменения текста.
- Для комбинированных списков (QComboBox) сигнал currentIndexChanged(int) позволяет отслеживать выбор пользователя.
- При работе с таблицами (QTableWidget) используйте cellChanged(int, int) для обработки редактируемых ячеек.
Пошаговая настройка через редактор сигналов и слотов:
- Выбрать виджет-источник сигнала.
- Нажать и удерживать Ctrl, перетащить линию на виджет-приемник.
- В открывшемся окне выбрать сигнал источника и слот приемника.
- Проверить, что соединение отображается в списке редактора сигналов/слотов.
- Повторить для всех необходимых виджетов.
Для сложных интерфейсов рекомендуется использовать комбинацию сигналов нескольких виджетов, чтобы обеспечить реакцию на изменение состояния всего окна, а не только отдельных элементов.
Сохранение проекта и генерация Python-кода

После завершения проектирования окна необходимо сохранить форму в формате .ui через File → Save As. Рекомендуется создавать отдельную папку для каждого проекта и использовать осмысленные имена файлов, так как имя .ui-файла станет основой для имени класса при генерации Python-кода.
Для генерации кода используется встроенный инструмент pyuic6 для PyQt6 или pyside6-uic для PySide6. Команда для PyQt6 выглядит так: pyuic6 -x mainwindow.ui -o mainwindow.py, где mainwindow.ui – имя исходного файла, а mainwindow.py – имя создаваемого Python-скрипта.
При генерации кода важно проверить следующие моменты:
- Имя класса в сгенерированном файле соответствует имени формы в Qt Designer.
- Все виджеты имеют уникальные objectName, иначе возникнут конфликты при подключении сигналов и слотов.
- Код корректно запускается из виртуального окружения Python с установленными библиотеками PyQt6 или PySide6.
Рекомендуется после генерации кода выполнить минимальный тест запуска окна, чтобы убедиться, что структура интерфейса сохраняется и все виджеты отображаются корректно перед подключением логики приложения.
Запуск окна из сгенерированного скрипта
После генерации Python-кода из .ui-файла можно запустить окно напрямую. Для PyQt6 используется следующий минимальный шаблон:
- Импортировать необходимые модули: sys, PyQt6.QtWidgets и сгенерированный класс окна.
- Создать экземпляр QApplication, который управляет жизненным циклом приложения.
- Создать экземпляр сгенерированного класса окна и вызвать метод show() для отображения интерфейса.
- Запустить основной цикл приложения с помощью sys.exit(app.exec()).
Пример запуска:
from PyQt6.QtWidgets import QApplication
from mainwindow import Ui_MainWindow
import sys
app = QApplication(sys.argv)
window = Ui_MainWindow()
window.show()
sys.exit(app.exec())
Рекомендации для корректного запуска:
- Убедиться, что используемая версия Python совпадает с версией библиотек PyQt6 или PySide6.
- Все импорты должны быть из активного виртуального окружения проекта.
- Если окно не отображается, проверить правильность инициализации центрального виджета в классе сгенерированного файла.
- Для сложных интерфейсов рекомендуется запускать окно с минимальной логикой, чтобы исключить ошибки при первичной проверке отображения.
Отладка и исправление ошибок при запуске

Следующий порядок действий помогает выявить и устранить проблемы:
1. Проверить корректность импорта сгенерированного класса. Ошибка ModuleNotFoundError указывает на неверный путь или отсутствие файла.
2. Убедиться, что все виджеты имеют уникальные objectName. Конфликты имен вызывают AttributeError при обращении к виджетам.
3. Проверить, что центральный виджет правильно инициализирован в методе setupUi. Без этого окно может отображаться пустым или не запускаться.
5. При сложных интерфейсах тестировать окно поэтапно: сначала запускать минимальный набор виджетов, затем постепенно добавлять элементы и проверять работоспособность каждого.
Рекомендуется также проверять совместимость с различными разрешениями экрана и масштабированием, чтобы убедиться, что интерфейс отображается корректно на всех устройствах.
Вопрос-ответ:
Какая версия Qt Designer подходит для работы с PyQt6?
Для работы с PyQt6 рекомендуется использовать Qt Designer версии 6 и выше. Это обеспечивает совместимость с последними модулями PyQt6 и поддерживает все стандартные виджеты и свойства, необходимые для создания оконных интерфейсов. Устаревшие версии Qt Designer могут не распознавать новые типы виджетов или свойства сигналов и слотов.
Как правильно выбрать тип окна при создании нового проекта?
Выбор типа окна зависит от структуры интерфейса. Main Window подходит для приложений с меню, тулбарами и статусной строкой, Dialog удобен для всплывающих окон или форм с ограниченным количеством элементов, а Widget используется для простых интерфейсов или компонентов, которые будут встроены в другие формы. После выбора типа окна сразу следует задать имя файла и директорию проекта, чтобы избежать конфликтов при генерации Python-кода.
Почему окно не отображается после запуска сгенерированного скрипта?
Причины могут быть разными. Часто это связано с несоответствием версии Python и библиотек PyQt6 или PySide6, неправильным импортом сгенерированного класса или отсутствием инициализации центрального виджета через метод setupUi. Также следует проверить уникальность objectName для всех виджетов и корректность подключения сигналов и слотов. Рекомендуется запускать минимальный набор виджетов для проверки отображения, добавляя остальные постепенно.
Как настроить сигналы и слоты для кнопок и полей в Qt Designer?
Сигналы и слоты настраиваются через Signal/Slot Editor или визуально: удерживая Ctrl, перетаскивают линию от виджета-источника к виджету-приемнику. Для кнопок используется clicked(), для полей ввода — textChanged() или editingFinished(), для комбинированных списков — currentIndexChanged(int). После соединения проверяют отображение соединений в редакторе, чтобы исключить ошибки при запуске окна.
Что делать, если виджеты при изменении размера окна искажаются?
Следует использовать компоновку (Layout) для группы виджетов. Например, Vertical Layout или Grid Layout. Компоновка автоматически подстраивает размеры и позиции элементов при изменении окна. Также рекомендуется задавать минимальные и максимальные размеры окна через свойства minimumSize и maximumSize, чтобы предотвратить чрезмерное сжатие или растяжение интерфейса.
