Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

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

Watchers

Forks

Releases

No releases published

Packages

Contributors

Languages

AltStyle によって変換されたページ (->オリジナル) /