Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Multi-Tool

Многофункциональное desktop-приложение на Python с тремя инструментами: калькулятор, графический редактор и 3D-просмотрщик STL-файлов.

Python PySide6 License Platform

Возможности

🔢 Калькулятор

  • Базовые арифметические операции: сложение, вычитание, умножение, деление
  • Цепочные вычисления без промежуточного нажатия "=" (например: 2 + 3 + 5 = 10)
  • Работа с десятичными числами
  • Обработка ошибок: деление на ноль, некорректный ввод
  • История текущего выражения на экране

🎨 Графический редактор (Paint)

  • Рисование кистью с настраиваемым размером (1-50 пикселей)
  • Выбор цвета кисти через палитру
  • Настройка цвета фона холста
  • Экспорт изображения в форматах PNG, JPEG, BMP
  • Выбор разрешения при сохранении (до 8000×8000 пикселей)
  • Очистка холста одной кнопкой

📦 3D-просмотрщик

  • Загрузка и отображение STL-файлов
  • Поддержка нескольких объектов одновременно
  • Интерактивное управление камерой:
    • ЛКМ — вращение сцены
    • СКМ (колёсико) — перемещение камеры
    • Прокрутка — масштабирование
  • Подсветка объекта контуром при наведении мыши
  • Загрузка файлов в фоновом потоке (интерфейс не блокируется)
  • Оптимизированный рендеринг через OpenGL Display Lists

⚙️ Общие функции

  • Две цветовые темы: светлая и тёмная
  • Два языка интерфейса: English и Русский
  • Автосохранение настроек между сессиями
  • Отображение текущего времени и даты
  • Современный минималистичный дизайн

🚀 Установка

Требования

  • Python 3.10 или выше
  • pip (менеджер пакетов Python)

Шаг 1: Клонирование репозитория

git clone [https://github.com/yourusername/multi-tool-dashboard.git](https://github.com/yourusername/multi-tool-dashboard.git)
cd multi-tool-dashboard

Шаг 2: Создание виртуального окружения (рекомендуется)

Windows:

python -m venv venv
venv\Scripts\activate

macOS / Linux:

python3 -m venv venv
source venv/bin/activate

Шаг 3: Установка зависимостей

pip install -r requirements.txt

Шаг 4: Запуск приложения

cd app
python main.py

📦 Зависимости

Пакет Версия Назначение
PySide6 ≥6.5.0 GUI-фреймворк (Qt for Python)
PyOpenGL ≥3.1.6 Рендеринг 3D-графики
numpy ≥1.24.0 Математические операции
numpy-stl ≥3.0.0 Парсинг STL-файлов
pytest ≥7.0.0 Запуск тестов

Примечание: Если вы не планируете использовать 3D-просмотрщик, можно установить только PySide6:

pip install PySide6

Вкладка 3D Scene покажет сообщение с инструкцией по установке недостающих пакетов.

🧪 Тестирование

Проект включает юнит-тесты для калькулятора и графического редактора.

Запуск всех тестов

python -m pytest tests/ -v

Запуск тестов с покрытием

pip install pytest-cov
python -m pytest tests/ -v --cov=app --cov-report=html

Отчёт о покрытии будет создан в папке htmlcov/.

Примеры тестов

# Тест сложения
def test_addition():
    engine = CalculatorEngine()
    engine.input_digit("2")
    engine.input_operator("+")
    engine.input_digit("3")
    engine.calculate()
    assert engine.current == "5"

# Тест деления на ноль
def test_division_by_zero():
    engine = CalculatorEngine()
    engine.input_digit("5")
    engine.input_operator("/")
    engine.input_digit("0")
    assert engine.calculate() == "div_zero"

⌨️ Горячие клавиши 3D-просмотрщика

Действие Управление
Вращение сцены Левая кнопка мыши + перетаскивание
Перемещение камеры Средняя кнопка мыши + перетаскивание
Масштабирование Прокрутка колёсика мыши

🎨 Кастомизация

Изменение логотипа

Замените файл app/logo.png на своё изображение. Рекомендуемое соотношение сторон: 3:1 (например, 600×200 пикселей).

Добавление нового языка

  1. Откройте app/main.py
  2. Найдите словарь TRANSLATIONS
  3. Добавьте новый ключ с переводами:
TRANSLATIONS = {
    "en": { ... },
    "ru": { ... },
    "de": {  # Немецкий
        "calculator": "Rechner",
        "paint": "Malen",
        # ... остальные переводы
    },
}
  1. Добавьте язык в диалог настроек (SettingsDialog)

Изменение цветовой схемы

Откройте app/main.py и отредактируйте словари в THEMES:

THEMES = {
    "light": {
        "bg_page": "#E0F4F4",      # Фон страницы
        "accent": "#009B9B",        # Акцентный цвет
        # ... остальные цвета
    },
    "dark": { ... },
}

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages