Metadata-Version: 2.1
Name: mini-style
Version: 1.1.0
Summary: A minimalist, opinionated GUI library for Python powered by web technologies
Author-email: Скворцов Сергей Александрович <ser.skvortsov.386@gmail.com>
Project-URL: Homepage, https://github.com/serskvortsov386/mini-style
Project-URL: Repository, https://github.com/serskvortsov386/mini-style
Project-URL: Issues, https://github.com/serskvortsov386/mini-style/issues
Classifier: Programming Language :: Python :: 3
Classifier: License :: Other/Proprietary License
Classifier: Operating System :: OS Independent
Requires-Python: >=3.7
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: pywebview >=5.0

# Mini-Style

[![PyPI version](https://badge.fury.io/py/mini-style.svg)](https://pypi.org/project/mini-style/)
[![Python](https://img.shields.io/badge/python-3.7%2B-blue.svg)](https://python.org)
[![License](https://img.shields.io/badge/license-MIT--Commercial-orange.svg)](LICENSE)

> Превращает скучные Python-скрипты в стильные приложения премиум-уровня.

---

## 👨‍💻 Автор

**Скворцов Сергей Александрович**  
* **GitHub:** [serskvortsov386](https://github.com/serskvortsov386/)  
* **Другие проекты:** [rusmenu](https://github.com/serskvortsov386/rusmenu/)  

---

## 📋 Лицензия

Это программное обеспечение распространяется по лицензии **MIT для некоммерческого использования**.

⚠️ **Для коммерческого использования требуется приобретение лицензии.**  
По вопросам лицензирования: ser.skvortsov.386@gmail.com

---

## 📦 Установка

```bash
pip install mini-style
```

---

## 🚀 Быстрый старт

```python
import mini_style

app = mini_style.App(title="Моё приложение", width=480, height=650)

app.add_label("Привет, мир!")
app.add_button("Нажми меня", action=lambda: print("Кнопка нажата!"))

app.run()
```

---

## ✨ Возможности

* **Минималистичный дизайн** — современный темный интерфейс «из коробки».
* **Безрамочное окно** — выглядит как профессиональное премиум-приложение.
* **Готовые компоненты** — кнопки, поля ввода, слайдеры, прогресс-бары, чекбоксы, радио-кнопки, выпадающие списки, текстовые поля, изображения.
* **Живое обновление** — динамическое управление интерфейсом в реальном времени.
* **Чистый Python** — вся логика пишется только на Python, без использования HTML/CSS.

---

## 🧩 Компоненты

| Метод | Описание |
| :--- | :--- |
| `add_label(text)` | Текстовая метка |
| `add_button(text, action)` | Стильная стандартная кнопка |
| `add_danger_button(text, action)` | Кнопка для опасных/акцентных действий |
| `add_input(placeholder, input_id)` | Поле ввода текста |
| `add_progress(percentage, progress_id)` | Прогресс-бар (шкала загрузки) |
| `add_slider(min, max, default, slider_id, action)` | Ползунок для выбора значений |
| `add_checkbox(text, checked, action)` | Флажок (чекбокс) |
| `add_radio(group, text, checked, action)` | Радио-кнопка |
| `add_dropdown(options, default, action)` | Выпадающий список |
| `add_text_area(placeholder, rows, input_id)` | Многострочное поле ввода |
| `add_image(path, url, base64_data, width, height)` | Изображение |
| `add_spacer(height)` | Отступ между элементами |

---

## ⚙️ Управление в реальном времени

```python
# Обновить прогресс-бар
app.set_progress("my_progress", 75)

# Получить значение из поля ввода
value = app.get_input_value("my_input")

# Получить состояние чекбокса
checked = app.get_checkbox_value("my_checkbox")

# Получить значение из многострочного поля
text = app.get_textarea_value("my_textarea")

# Получить выбранное значение из выпадающего списка
selected = app.get_dropdown_value("my_dropdown")

```

---

## 💡 Пример использования

```python
import mini_style
import time

app = mini_style.App(title="Система Оптимизации", width=450, height=600)

def on_checkbox(checked):
    print(f"Чекбокс: {checked}")

def on_radio(value):
    print(f"Выбрана радио-кнопка: {value}")

def on_dropdown(value):
    print(f"Выбрано: {value}")

def on_start():
    name = app.get_input_value("username_field")
    print(f"Запуск для пользователя: {name}")
    for percent in range(0, 101, 20):
        app.set_progress("bar_clean", percent)
        time.sleep(0.15)

app.add_label("Новые компоненты v1.1.0:")

app.add_label("Чекбокс:")
app.add_checkbox("Согласен с условиями", action=on_checkbox)

app.add_label("Радио-кнопки:")
app.add_radio("theme", "Тёмная", checked=True, action=on_radio)
app.add_radio("theme", "Светлая", action=on_radio)

app.add_label("Выпадающий список:")
app.add_dropdown(["Python", "JavaScript", "C++"], default=0, action=on_dropdown)

app.add_label("Многострочное поле:")
app.add_text_area(placeholder="Введите описание...", rows=3)

app.add_label("Изображение:")
app.add_image(url="https://via.placeholder.com/200x100/1f2833/66fcf1?text=Mini-Style", width=200)

app.add_spacer(height=20)

app.add_label("Старые компоненты:")

app.add_label("Введите ваше имя:")
app.add_input(placeholder="Имя...", input_id="username_field")

app.add_label("Прогресс выполнения:")
app.add_progress(percentage=0, progress_id="bar_clean")

app.add_button("Запустить оптимизацию", action=on_start)
app.add_danger_button("Сбросить", action=lambda: print("Сброшено!"))

app.run()
```

---

## 🤝 Поддержка

Если вам понравился проект, поддержите автора:
* ⭐ Поставьте звезду на **GitHub**
* 🔔 Подпишитесь на обновления профиля
* 💼 Приобретите **коммерческую лицензию** для своих бизнес-проектов

© 2026 Скворцов Сергей Александрович · ser.skvortsov.386@gmail.com
