Skip to content

Mariia-fed/Maria-project

Repository files navigation

Maria-project

Проект на PyQt AesteticPhotoLocation. Проект разработала Федченко Мария 17 лет. Ученица 2 года обучения Яндекс Лицея.

  1. Тема проекта: Приложение для поиска эстетичных локаций, ресторанов, кафе. В приложении прикреплены фотографии, адреса, ссылки на карты, ближайшие метро к локациям.

    Пользователь может:

    • Добавить свою локацию и все данные о ней
    • Посмотреть описание локации
    • Расположение на карте мира
    • Переключать тему ("светлая", "темная")
    • Отредактировать данные о локации
    • Отфильтровать по типу и ближайшему метро
    • Удалить любую локацию
  2. Что нужно для запуска приложения?
    1. Установить PyCharm
    2. Перейти по ссылке на Яндекс Диск, распаковать zip архив и установить все библиотеки и модули из текстового файла requirements.txt, если не получится открыть, можно установить через терминал библиотеки ( ввести: 'pip install pyqt6', 'pip install webbrowser', 'pip install folium')
    3. Создать в любом проекте directory
    4. Скачать папку img с изображениями и вставить ее в созданную directory
    5. Скачать БД AesteticPhotoLocation.db и тоже вставить ее в directory
    6. Переместить img/logo в directory
    7. Запустить приложение через кнопку Run
  3. Описание конечных технологий, которые использовались в проекте
    1. В качестве среды разработки я выбрала PyCharm
    2. Архитектура приложения включает в себя 2 части: Frontend и Backend. Frontend – Пользовательский интерфейс и функции, которые работают непосредственно на клиентской стороне. Backend – часть проекта, где осуществляется работа с базой данных в SQLlite, для сохранения и добавления данных о локациях
    3. В проекте для реализации графического интерфейса я использовала библиотеку PyQT6.
    4. Для работы с БД библиотеку sqlite3
    5. Библиотеку dadetime для логирования действия в текстовый файл
    6. Для просмотря документов библиотеку webbrowser
    7. Библиотеку Folium я использовала для визуализации геоданных на интерактивных картах.
    8. И библиотеку os для преобразования пути к изображению в абсолютный
  4. Описание структуры классов и за что они отвечают
    1. Класс 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 - закрытие соединения с БД при закрытии приложения)
    2. Класс AddLocationDialog. Создает поля для вода данных. select_photo - диалоговое окно для выбора изображения, add_location - добавление новой локации в БД.
    3. Класс EditLocationDialog. Позволяет редактировать локацию. Сначала подтягивает все данные, потом в помощью select_photo открывает окно для выбора изображения. save_changes - функция сохраняет изменения.
  5. База Данных AesteticPhotoLocation. Состоит из 2-х таблиц locations для хранения информации локациях и location_types для хранения информации о типах локации. Таблица location_types состоит всего из двух полей: id и name, в которых для каждого жанра хранится его идентификатор и название соответственно. В таблице locations есть поля id, name, type, address, metro, coordinates, map_link для хранения идентификатора локации, его названия, типа, адреса, ближайшего метро, координат и ссылки на Яндекс карты. Между таблицами есть связь, номер типа у записи locations соответствует записи в таблице location_types с таким же значением идентификатора.

About

Yandex Project AesteticPhotoLocation

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors