Українська
Designer, оформлення та перевірка
Qt Widgets Designer і файли ui
Designer створює XML-опис .ui з віджетами, властивостями й компонуваннями. Він не замінює перевірку даних і предметну логіку. Основний підхід теми – інтерфейс у коді; Designer корисний для огляду форми та співпраці над розміщенням. https://doc.qt.io/qtforpython-6/tutorials/basictutorial/uifiles.html.
powershell
uv run pyside6-designer
uv run pyside6-uic tasks.ui -o ui_tasks.pyОберіть шаблон Widget, додайте поля, встановіть компонування, задайте змістовні objectName, збережіть .ui. Згенерований ui_tasks.py не редагують вручну: зміни зникнуть при повторній генерації. Власний клас створює Ui_Form, викликає setupUi(self) і підключає обробники. Лабораторна робота містить повний приклад.
Альтернатива – QUiLoader, який читає .ui під час запуску. Відкрийте QFile, перевірте успіх, передайте у loader.load, перевірте отримане вікно й закрийте файл. Поля знаходять findChild(QLineEdit, "nameEdit"); відсутнє ім’я є помилкою форми, яку треба повідомити. За такого підходу .ui треба розповсюджувати разом із програмою. Генерація дає звичайний імпорт Python і раніше виявляє частину помилок імен.
Знімок екрана
Open lab tasks.ui in Designer; show Widget Box, form layout, Object Inspector and Property Editor with objectName.
Рис. 14.11. Форма в Qt Widgets Designer
Знімок екрана
Use Edit Signals/Slots F4 on a scratch form: button clicked to form close; show Configure Connection. Do not add this connection to tasks.ui.
Рис. 14.12. З’єднання сигналу і слота в Designer
Оформлення, доступність і перевірка
QSS – таблиці стилів Qt з CSS-подібним синтаксисом, але не повна вебтехнологія. Стиль QLineEdit { border: 1px solid gray; } можна встановити через setStyleSheet. Не передавайте колір як єдине повідомлення про помилку: додайте пояснювальний текст. Довільне жорстке задавання білого фону й чорного тексту лише частині компонентів може зламати системну темну тему.
QFont налаштовує шрифт, QIcon – піктограму. Ресурси .qrc та pyside6-rcc дозволяють уникнути залежності від поточного каталогу. Для простого проєкту шлях будують від __file__, а не від випадкового місця запуску. Qt 6 підтримує High-DPI; перевірте вікно при збільшеному масштабі, а не малюйте всі елементи з фіксованими розмірами в пікселях.
Перевірка графічного застосунку має три частини. Чисті функції обчислень перевіряють pytest. Стан віджетів перевіряють після встановлення даних і натискань, наприклад через QtTest. Вигляд оцінюють у справжньому вікні: відступи, фокус клавіатури, перенесення підписів та поведінка при зміні розміру. Режим QT_QPA_PLATFORM=offscreen корисний для автоматичних перевірок стану, але не доводить якість вигляду на Windows.
Типові помилки
- Віджет створено раніше за
QApplication: створіть застосунок першим. - Немає
app.exec(): програма не обробляє події. connect(handler())викликає обробник завчасно: передайте функцію.- Два поля змінюють одне одного нескінченно: розрізняйте
textEditedіtextChanged, використайтеQSignalBlocker. - Слот очікує мережу або виконує довгий цикл: розділіть роботу, не блокуйте GUI-потік.
- Вікно зникає після функції: перевірте батька і Python-посилання.
- Перевірено лише кнопку: повторіть валідацію в дії та перевірте імпортовані дані окремо.
- Редагується згенерований
ui_*.py: змінюйте.uiі власний клас.