Skip to content

Десктопное приложение на Python для просмотра файлов MHT/MHTML с поддержкой слайдов, зума изображений и комментариев

Notifications You must be signed in to change notification settings

NergalIO/MHTViewer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MHT Viewer

Просмотрщик файлов MHT/MHTML с поддержкой слайдов, изображений и комментариев.

Описание

MHT Viewer — это десктопное приложение на Python с графическим интерфейсом для просмотра файлов формата MHT (MHTML). Приложение позволяет:

  • Просматривать слайды из MHT файлов
  • Отображать изображения с поддержкой зума и панорамирования
  • Просматривать комментарии к слайдам
  • Навигироваться между слайдами

Возможности

  • 📄 Парсинг MHT/MHTML файлов
  • 🖼️ Отображение изображений с поддержкой зума колесом мыши
  • 🖱️ Панорамирование изображений перетаскиванием мыши
  • 📝 Просмотр комментариев к слайдам
  • ⌨️ Навигация между слайдами (вперед/назад)
  • 🎨 Современный интерфейс на базе Tkinter

Требования

  • Python 3.7+
  • Tkinter (обычно входит в стандартную поставку Python)
  • Pillow (PIL) — для отображения изображений
  • BeautifulSoup4 — для парсинга HTML

Установка

  1. Клонируйте репозиторий или скачайте проект:
git clone <repository-url>
cd MHTViewer
  1. Установите зависимости:
pip install pillow beautifulsoup4

Или используйте файл requirements.txt (если создан):

pip install -r requirements.txt

Использование

Запустите приложение:

python main.py

Или напрямую:

python -m app.viewer_app

Интерфейс

  1. Меню "Файл""Открыть..." — выбрать MHT файл для просмотра
  2. Кнопки навигации — переключение между слайдами
  3. Колесо мыши — зум изображения
  4. ЛКМ + перетаскивание — панорамирование изображения

Структура проекта

Проект организован по модульному принципу с применением SOLID:

MHTViewer/
├── main.py                 # Точка входа
├── app/                    # Главное приложение
│   ├── __init__.py
│   └── viewer_app.py       # Основной класс приложения
├── core/                   # Бизнес-логика
│   ├── __init__.py
│   ├── slide.py            # Модель данных Slide
│   ├── slide_builder.py    # Построение слайдов из MHT
│   └── slide_manager.py    # Управление навигацией
├── ui/                     # Компоненты интерфейса
│   ├── __init__.py
│   ├── menu.py             # Меню приложения
│   ├── toolbar.py          # Панель инструментов
│   ├── slide_viewer.py     # Просмотр слайдов с зумом/панорамированием
│   └── comment_box.py      # Компонент комментариев
├── image/                  # Обработка изображений
│   ├── __init__.py
│   ├── image_handler.py    # Работа с PIL/Pillow
│   └── zoom_controller.py  # Контроллер зума и панорамирования
├── parsers/                # Парсеры
│   ├── __init__.py
│   └── mht_parser.py       # Парсер MHT/MHTML файлов
└── utils/                  # Утилиты
    ├── __init__.py
    └── constants.py        # Константы и перечисления

Архитектура

Проект следует принципам SOLID:

  • Single Responsibility Principle (SRP) — каждый класс отвечает за одну задачу
  • Open/Closed Principle (OCP) — компоненты расширяемы без изменения существующего кода
  • Liskov Substitution Principle (LSP) — компоненты взаимозаменяемы
  • Interface Segregation Principle (ISP) — интерфейсы разделены по функциональности
  • Dependency Inversion Principle (DIP) — зависимости через абстракции

Разработка

Запуск в режиме разработки

python main.py

Структура модулей

  • app/ — координация работы всех компонентов
  • core/ — бизнес-логика и модели данных
  • ui/ — компоненты пользовательского интерфейса
  • image/ — обработка и отображение изображений
  • parsers/ — парсинг файлов
  • utils/ — вспомогательные утилиты

Лицензия

[Укажите лицензию проекта]

Автор

[Укажите автора проекта]

Поддержка

При возникновении проблем создайте issue в репозитории проекта.

About

Десктопное приложение на Python для просмотра файлов MHT/MHTML с поддержкой слайдов, зума изображений и комментариев

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages