Skip to content

Latest commit

 

History

History
98 lines (67 loc) · 7.39 KB

File metadata and controls

98 lines (67 loc) · 7.39 KB

Лабораторная работа № 5

GUI

Теория

PyQt

PyQt — это библиотека для создания графических интерфейсов на языке Python, основанная на Qt Framework. Вот основные элементы, с которыми вы будете работать при использовании PyQt:

1. QApplication

Это основной класс, который управляет приложением. Он необходим для создания любого приложения на PyQt. Создается только один экземпляр QApplication в каждом приложении:

import sys
from PyQt5.QtWidgets import QApplication

app = QApplication(sys.argv)

2. QWidget

Это базовый класс для всех объектов пользовательского интерфейса. QWidget может использоваться для создания окон, диалогов и других виджетов.

3. QMainWindow

Подкласс QWidget, который предоставляет основные возможности для создания главного окна приложения. Он включает в себя меню, статусные строки и панели инструментов.

4. Layouts

Для управления расположением виджетов в окне вы можете использовать различные менеджеры компоновки, такие как:

  • QHBoxLayout — горизонтальное расположение.
  • QVBoxLayout — вертикальное расположение.
  • QGridLayout — сеточное расположение.

5. Widgets

PyQt предоставляет множество встроенных виджетов, которые используют для создания интерфейса:

  • QPushButton — кнопка.
  • QLabel — метка для текста.
  • QLineEdit — однострочное текстовое поле.
  • QTextEdit — многострочное текстовое поле.
  • QComboBox — выпадающий список.
  • QCheckBox и QRadioButton — элементы для выбора.

6. Signals and Slots

Сигналы и слоты — это механизм, который позволяет связывать действия (сигналы) с реакциями (слоты). Это основной способ обработки событий в PyQt. Пример:

button.clicked.connect(some_function)  # при нажатии на кнопку button вызывается функция some_function

7. QDialog

Диалоговые окна, используемые для получения информации от пользователя. Это могут быть простые модальные или немодальные диалоги.

8. QMenuBar и QToolBar

Эти классы создают меню и панели инструментов, предоставляя пользователям доступ к различным функциям вашего приложения.

9. QStatusBar

Используется для отображения служебной информации в нижней части главного окна, например, сообщений о состоянии или прогресса.

10. QTimer

Класс, который позволяет выполнять функции через заданные интервалы времени, что полезно для создания анимации или периодических обновлений интерфейса.

11. QMessageBox

Готовые диалоговые окна для взаимодействия с пользователем. Используются для сообщений с ошибками, предупреждений, подтверждений и т.п.

Полезные ссылки

Задание

Создать приложение с графическим интерфейсом, позволяющее просматривать датасет из лабораторной работы №2. Необходимо создать файл main_window.py в котором будет реализован графический интерфейс вашего приложения. Итератор для изображений/аудиофайлов импортировать из файлов второй лабораторной работы. Сделать возможность выбора папки датасета или файла аннотации (в зависимости от устройства вашего итератора).

Приложение должно иметь кнопки для получения следующего изображения/аудиофайла из датасета. После нажатия на них должен быть получен следующий путь при помощи итератора, а затем отображено следующее изображение/аудио из вашего датасета в интерфейсе вашей программы.

Для создания графического интерфейса можно использовать Qt Designer.

Варианты 1-16:

  • Отобразить изображение исходного размера или меньшего размера с сохранением пропорций (без деформации). Для работы с изображением использовать QPixmap.

Варианты 17-30:

  • Отобразить название композиции, длительность и кнопку проигрывания/остановки. При переключении на следующую композицию предыдущая должна останавливаться. Для работы с аудио использовать QMediaPlayer или другую совместимую библиотеку.

Дополнительно

По желанию можно реализовать дополнительный функционал, например:

  • Изменение датасета (добавление, удаление, редактирование через приложение).
  • Функции из лабораторных работ 2-4.
  • Усовершенстовать оформление и работу с данными (зум для изображений, трек проигрывания и кнопка паузы для аудиофайла и т.п.)
  • Иной функционал, касающийся работы с вашими данным.

При этом, основной функционал и понятность для пользователя приложения должны сохраняться.