Десктопное приложение для повторения карточек по интервальному алгоритму. Работает без интернета, данные хранятся локально в SQLite.
# 1. Создать виртуальное окружение (если нет) python -m venv venv # 2. Активировать # Windows: venv\Scripts\activate # macOS/Linux: source venv/bin/activate # 3. Установить зависимости pip install -r requirements.txt # 4. Запустить python main.py
| Компонент | Решение |
|---|---|
| Язык | Python 3.12 |
| GUI | customtkinter |
| БД | SQLite (cards.db) |
| Импорт | CSV (stdlib) + chardet |
| Тип | Desktop, offline |
pycards/
main.py # Точка входа
db.py # Инициализация БД
deck_model.py # Колоды
card_model.py # Карточки
scheduler.py # SM-2
csv_io.py # Импорт/экспорт CSV
ui/
main_window.py
editor_window.py
review_window.py
constants.py
utils.py
data/
cards.db
Таблица decks: id, name (UNIQUE), created_at
Таблица cards: id, deck_id (FK → decks, CASCADE), question, answer, interval (часы), repetitions, ease_factor, next_review, created_at
Даты хранятся как TEXT в формате YYYY-MM-DD HH:MM:SS.
ease_factor фиксирован = 2.5, не меняется.
| Оценка | interval | repetitions |
|---|---|---|
| Плохо | = 1 ч | = 0 |
| Нормально | ×ばつ 1 | + 1 |
| Хорошо | ×ばつ 2 | + 1 |
| Легко | ×ばつ 3 | + 1 |
Минимальный интервал — 1 час. next_review = now + N hours.
При оценке Плохо — карточка возвращается в конец очереди текущей сессии.
Главное меню → две кнопки: «Обучение» и «Редактор».
Редактор — управление колодами и карточками:
- Список колод (создать / переименовать / удалить)
- Внутри колоды: список карточек, создание вручную, импорт/экспорт CSV, перенос между колодами
Окно обучения:
- Выбор колоды → показ карточек с
next_review ≤ now - Вопрос → (кнопка) → Ответ → 4 кнопки оценки
- Счётчик «Осталось X / Повторено Y»
Режим просмотра — листание всех карточек без изменения интервалов. Удобно, если нужно просто освежить материал, не влезая в расписание.
Формат: вопрос,ответ (без заголовка)
- Кодировка определяется автоматически через
chardet - Пустые строки и строки < 2 колонок пропускаются
- Дубликаты по
(deck_id, question)пропускаются
- Создание / удаление колод и карточек
- Импорт из CSV, экспорт в CSV
- Перенос карточки между колодами
- Режим повторения с SM-2
- Режим просмотра (без записи результатов)
- SQLite-хранилище
LaTeX в MVP не рендерится — формулы выводятся как есть, сырым текстом.