Многофункциональное desktop-приложение на Python с тремя инструментами: калькулятор, графический редактор и 3D-просмотрщик STL-файлов.
- Базовые арифметические операции: сложение, вычитание, умножение, деление
- Цепочные вычисления без промежуточного нажатия "=" (например: 2 + 3 + 5 = 10)
- Работа с десятичными числами
- Обработка ошибок: деление на ноль, некорректный ввод
- История текущего выражения на экране
- Рисование кистью с настраиваемым размером (1-50 пикселей)
- Выбор цвета кисти через палитру
- Настройка цвета фона холста
- Экспорт изображения в форматах PNG, JPEG, BMP
- Выбор разрешения при сохранении (до 8000×8000 пикселей)
- Очистка холста одной кнопкой
- Загрузка и отображение STL-файлов
- Поддержка нескольких объектов одновременно
- Интерактивное управление камерой:
- ЛКМ — вращение сцены
- СКМ (колёсико) — перемещение камеры
- Прокрутка — масштабирование
- Подсветка объекта контуром при наведении мыши
- Загрузка файлов в фоновом потоке (интерфейс не блокируется)
- Оптимизированный рендеринг через OpenGL Display Lists
- Две цветовые темы: светлая и тёмная
- Два языка интерфейса: English и Русский
- Автосохранение настроек между сессиями
- Отображение текущего времени и даты
- Современный минималистичный дизайн
- Python 3.10 или выше
- pip (менеджер пакетов Python)
git clone [https://github.com/yourusername/multi-tool-dashboard.git](https://github.com/yourusername/multi-tool-dashboard.git)
cd multi-tool-dashboardWindows:
python -m venv venv
venv\Scripts\activatemacOS / Linux:
python3 -m venv venv
source venv/bin/activatepip install -r requirements.txtcd 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/ -vpip 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"| Действие | Управление |
|---|---|
| Вращение сцены | Левая кнопка мыши + перетаскивание |
| Перемещение камеры | Средняя кнопка мыши + перетаскивание |
| Масштабирование | Прокрутка колёсика мыши |
Замените файл app/logo.png на своё изображение. Рекомендуемое соотношение сторон: 3:1 (например, 600×200 пикселей).
- Откройте
app/main.py - Найдите словарь
TRANSLATIONS - Добавьте новый ключ с переводами:
TRANSLATIONS = {
"en": { ... },
"ru": { ... },
"de": { # Немецкий
"calculator": "Rechner",
"paint": "Malen",
# ... остальные переводы
},
}- Добавьте язык в диалог настроек (
SettingsDialog)
Откройте app/main.py и отредактируйте словари в THEMES:
THEMES = {
"light": {
"bg_page": "#E0F4F4", # Фон страницы
"accent": "#009B9B", # Акцентный цвет
# ... остальные цвета
},
"dark": { ... },
}