Skip to content

mshqq/PyCards

Repository files navigation

PyCards — Desktop Flashcard App

Десктопное приложение для повторения карточек по интервальному алгоритму. Работает без интернета, данные хранятся локально в 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.


Алгоритм SM-2 (упрощённый)

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»

Режим просмотра — листание всех карточек без изменения интервалов. Удобно, если нужно просто освежить материал, не влезая в расписание.


Импорт CSV

Формат: вопрос,ответ (без заголовка)

  • Кодировка определяется автоматически через chardet
  • Пустые строки и строки < 2 колонок пропускаются
  • Дубликаты по (deck_id, question) пропускаются

В MVP реализовано

  • Создание / удаление колод и карточек
  • Импорт из CSV, экспорт в CSV
  • Перенос карточки между колодами
  • Режим повторения с SM-2
  • Режим просмотра (без записи результатов)
  • SQLite-хранилище

LaTeX в MVP не рендерится — формулы выводятся как есть, сырым текстом.

About

Приложение для интервального повторения карточек на Python. SM-2 алгоритм, SQLite, CSV-импорт, customtkinter GUI

Topics

Resources

License

Stars

2 stars

Watchers

1 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages