You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Проект на PyQt AesteticPhotoLocation. Проект разработала Федченко Мария 17 лет. Ученица 2 года обучения Яндекс Лицея.
Тема проекта: Приложение для поиска эстетичных локаций, ресторанов, кафе. В приложении прикреплены фотографии, адреса, ссылки на карты, ближайшие метро к локациям.
Пользователь может:
Добавить свою локацию и все данные о ней
Посмотреть описание локации
Расположение на карте мира
Переключать тему ("светлая", "темная")
Отредактировать данные о локации
Отфильтровать по типу и ближайшему метро
Удалить любую локацию
Что нужно для запуска приложения?
Установить PyCharm
Перейти по ссылке на Яндекс Диск, распаковать zip архив и установить все библиотеки и модули из текстового файла requirements.txt, если не получится открыть, можно установить через терминал библиотеки ( ввести: 'pip install pyqt6', 'pip install webbrowser', 'pip install folium')
Создать в любом проекте directory
Скачать папку img с изображениями и вставить ее в созданную directory
Скачать БД AesteticPhotoLocation.db и тоже вставить ее в directory
Переместить img/logo в directory
Запустить приложение через кнопку Run
Описание конечных технологий, которые использовались в проекте
В качестве среды разработки я выбрала PyCharm
Архитектура приложения включает в себя 2 части: Frontend и Backend. Frontend – Пользовательский интерфейс и функции, которые работают непосредственно на клиентской стороне. Backend – часть проекта, где осуществляется работа с базой данных в SQLlite, для сохранения и добавления данных о локациях
В проекте для реализации графического интерфейса я использовала библиотеку PyQT6.
Для работы с БД библиотеку sqlite3
Библиотеку dadetime для логирования действия в текстовый файл
Для просмотря документов библиотеку webbrowser
Библиотеку Folium я использовала для визуализации геоданных на интерактивных картах.
И библиотеку os для преобразования пути к изображению в абсолютный
Описание структуры классов и за что они отвечают
Класс LocationApp. Отвечает за создание основного окна, прикрепляет фото к приложению, подключается к базе данных. Создает основные элементы для фильтртраци по типу, элеенты для фильтрации по метро и остальные кнопки включая переключения темы, удаление локаций и т.д. QScrollArea для горизонтальной ленты (все-таки мне горизонтальная больше нравится). Далее в функции load_locations загружаются все локации и фото из БД. Потом идут функции (apply_filter- - применение фильтра, show_map - отображение списка заведений для выбора карты, confirm_map_link диалог для подтверждения перехода по ссылке, toggle_theme - переключение темы со светлой на темную и обратно, delete_location - удаление выбранной локации, show_map_with_photos - функция с использованием библиотеки folium, которая позволяет создать карту с фотографиями и названиями всех заведений, show_location_selector - окно для редактирования локации, open_edit_dialog - диалог для редактирования данных о локации, show_add_location_dialog - диалог для добавления новой локации, add_location - добавление новой локации в БД, closeEvent - закрытие соединения с БД при закрытии приложения)
Класс AddLocationDialog. Создает поля для вода данных. select_photo - диалоговое окно для выбора изображения, add_location - добавление новой локации в БД.
Класс EditLocationDialog. Позволяет редактировать локацию. Сначала подтягивает все данные, потом в помощью select_photo открывает окно для выбора изображения. save_changes - функция сохраняет изменения.
База Данных AesteticPhotoLocation. Состоит из 2-х таблиц locations для хранения информации локациях и location_types для хранения информации о типах локации. Таблица location_types состоит всего из двух полей: id и name, в которых для каждого жанра хранится его идентификатор и название соответственно. В таблице locations есть поля id, name, type, address, metro, coordinates, map_link для хранения идентификатора локации, его названия, типа, адреса, ближайшего метро, координат и ссылки на Яндекс карты. Между таблицами есть связь, номер типа у записи locations соответствует записи в таблице location_types с таким же значением идентификатора.