Skip to content

jabrailkhalil/schedule_helper

Repository files navigation

Dater – Lesson Schedule Generator

Quick & dirty utility I built in one evening to generate date sequences for my recurring lessons. Sharing it in case someone else finds it useful!

What it does

  1. Установите зависимости и активируйте виртуальное окружение (если используете).

  2. Самый быстрый путь — запустить файл run_gui.bat (двойной клик в проводнике). Он подхватит локальное виртуальное окружение и откроет окно.

  3. Можно стартовать напрямую через Python:

    python schedule_gui.py
  4. Либо оставить единый файл:

    python schedule_generator.py
  5. В окне доступны:

    • календарь с навигацией по месяцам — просто кликните нужный день, он попадёт в поле «Дата начала»;
    • чекбоксы дней недели (можно отметить понедельник/пятницу/субботу и др.);
    • современная тёмная тема, которая не слепит по вечерам;
    • поля для количества занятий, формата даты и разделителя отображения;
    • поле формата даты использует стандарт strftime: по умолчанию выводится %d.%m (без года), но можно ввести, например, %d.%m.%Y или %d %b;
    • окно всегда остаётся на панели задач; чтобы показывался собственный значок, рядом с schedule_generator.py положите icon.ico или logo.ico (также icon.png/logo.png для окна); при желании можно включить кастомную рамку, переключив константу USE_BORDERLESS_WINDOW, либо значок в системном трее через ENABLE_SYSTEM_TRAY.

Рекомендации по иконке

  • Формат .ico обязателен для панели задач Windows; добавьте также .png для окна Tk.
  • Название файлов: icon.ico / icon.png (или logo.ico / logo.png) в том же каталоге, что и schedule_generator.py.
  • Сгенерируйте ICO с несколькими квадратными слоями: 16×16, 32×32, 48×48, 64×64 и 256×256 пикселей.
  • Цветовое пространство — 32-бит (RGBA) с прозрачностью; избегайте палитр ≤256 цветов.
  • Файл должен весить не более нескольких сотен килобайт и не содержать EXIF/ICC профилей.

Быстрая генерация иконки

Если есть только исходная картинка (например, branding.png), запустите вспомогательный скрипт — он сделает совместимые logo.ico и logo.png:

python tools/generate_icon.py branding.png

По умолчанию файлы появятся в корне проекта; при необходимости задайте другой путь через --output-dir. - выпадающий список «Разделитель при копировании» (по умолчанию табуляция для корректной вставки в Excel по столбцам); - кнопка «Сгенерировать» и отдельная кнопка «Скопировать в Excel», которую теперь можно нажимать сколько угодно раз — она берёт последнюю строку и копирует её с выбранным разделителем в буфер обмена.

Также можно явно указать флаг --gui, если запуск идёт с другими параметрами: python schedule_generator.py --gui.

Портативный EXE

  • В каталоге dist после сборки лежит единый файл Dater.exe. Его можно перенести на любой компьютер с Windows и запускать без установки Python.

  • Чтобы собрать EXE самостоятельно, запустите build.bat (двойной клик в проводнике) или выполните вручную:

     .venv\Scripts\pyinstaller.exe --clean Dater.spec
  • При сборке PyInstaller автоматически упакует icon.png и icon.ico (или logo.png/logo.ico если они есть), а .ico станет иконкой EXE и значком окна/панели задач.

Если окно не открывается

  • Запускайте run_gui.bat — при ошибке окно консоли не закроется, а в каталоге появится файл schedule_gui_errors.log с подробностями.
  • Типичная проблема на Windows — Python установлен без компонента Tcl/Tk. При появлении ошибки Can't find a usable init.tcl переустановите Python с официального сайта, отметив галочку "tcl/tk and IDLE", либо установите пакет tcl/tk отдельно и перезапустите run_gui.bat.
  • Любые необработанные ошибки также попадут в schedule_gui_errors.log; приложите его содержимое, если нужно поделиться стек-трейсом.

CLI-режим

python schedule_generator.py --start 2025-11-01 --weekdays пн пт сб --lessons 12

Опции:

  • --start — дата начала оплаты. Поддерживаются форматы 2025-11-01, 01.11.2025, 01/11/2025, 01-11-2025, 01.11.25, 2025/11/01.
  • --weekdays — перечисление дней недели через пробел. Можно использовать русские или английские варианты: пн, понедельник, mon, monday, и т. д.
  • --lessons — сколько занятий нужно получить (например, количество уроков в месяце).
  • --delimiter (необяз.) — чем разделять даты в итоговой строке. По умолчанию ; , удобно вставлять в одно поле Excel.
  • --date-format (необяз.) — формат вывода дат (синтаксис strftime). По умолчанию "%d.%m"01.11. Можно ввести любой шаблон вроде %d.%m.%Y, если нужен год.

Пример

Вход:

python schedule_generator.py --start 2025-11-01 --weekdays пн пт сб --lessons 9 --delimiter "\t"

Вывод (одно поле, разделённое табуляцией):

01.11	03.11	07.11	08.11	10.11	14.11	15.11	17.11	21.11

Эту строку можно целиком вставить в Excel — каждая дата окажется в отдельной ячейке по горизонтали.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors