Skip to content

Repository files navigation

日历挂件(CalendarDesk)

一个基于 Python + PySide6 的桌面日历挂件,支持农历、法定节假日标记、主题切换、备忘录与定时提醒,可驻留系统托盘后台运行。

功能特性

  • 无边框日历窗口:支持鼠标拖动与边缘缩放,界面简洁。
  • 年月独立切换:可分别切换上/下一年、上/下一月,一键回到今天。
  • 农历显示:公历转农历,覆盖 1900–2100 年,支持闰月与生肖。
  • 法定节假日标记:休息日标红,调休上班日显示「班」,其余不放假节日正常显示。
  • 主题切换:内置 5 套 VSCode 风格配色(含明暗),可持久化。
  • 备忘录:支持多条备忘、定时提醒、日期详情查看。
  • 系统托盘:关闭/最小化驻留后台,托盘菜单可恢复、置顶、彻底退出。
  • 单实例保护:重复启动时自动唤醒已有窗口,不产生多实例。

运行方式

python my_calendar.py

依赖:PySide6(安装 pip install PySide6)。

项目结构

文件 职责
my_calendar.py 程序入口:单实例检测与 main
config.py 路径常量、QSettings、环境配置
lunar.py 农历转换纯函数(1900–2100)
themes.py 5 套 VSCode 风格主题定义
holiday.py 节假日下载 / 缓存 + 后台下载线程
festivals.py 节日名 + get_day_extra_info 判断
memo.py 备忘录存储读写
dialogs.py 备忘录编辑、日期详情两个对话框
main_window.py CalendarWindow 主窗口

依赖方向:configlunar / themesholidayfestivalsmemodialogsmain_windowmy_calendar(入口),无循环导入。

数据文件

程序运行时会在同级目录自动生成以下文件:

  • calendar_memo.json:备忘录数据。
  • holiday_cache.json:已下载的节假日缓存(离线可用)。

使用说明

  • 切换年月:点击导航栏两侧的 ◀ / ▶ 按钮;「今天」按钮快速回到当天。
  • 切换主题:点击左上角「主题」按钮。
  • 查看/编辑日期:点击任意日期格子,可查看农历、节日并编辑备忘录。
  • 后台驻留:点击 ✕ 或 Alt+F4 默认隐藏到托盘;托盘右键菜单「完全退出程序」才真正结束进程。
  • 关闭行为设置:托盘菜单「关闭时最小化到托盘」可切换点击 ✕ 后的行为。

About

A desktop calendar widget built with Python and PySide6, featuring lunar calendar, Chinese public holiday marking, theme switching, memo with scheduled reminders, and system tray support.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages