一个简洁的课程表显示工具
此程序仍在开发中且并不完善,不建议您在任何生产生活中使用此程序,由于技术栈的选型问题,我们(至少说hujinming0722)正在准备再次重构此程序,并不再使用ai开发,这需要一定的时间,感谢各位的支持!
TimeNest 是一个简洁美观的桌面课程表应用。它以悬浮窗的形式显示在桌面上,可以随时查看当前和下一节课的信息。
- 桌面悬浮窗: 课程表以半透明悬浮窗形式显示在桌面上
- 实时课程信息: 显示当前时间和日期,以及当前和下一节课的详细信息
- 系统托盘管理: 最小化到系统托盘,支持快速操作
- 课程表设置: 可自定义一周五天(周一至周五)的课程安排
- UI个性化: 支持背景颜色、文字颜色、透明度等界面设置
- 拖拽移动: 可以拖拽窗口到任意位置
- 鼠标穿透: 可设置鼠标穿透功能,避免误操作(此功能由于tkinter本身限制正在开发)
程序会根据当前时间和课表数据动态显示课程信息:
- 正在上课: 如果当前时间在某节课的时间段内,会显示"正在上课: 课程名 (开始时间-结束时间)"
- 课间休息: 如果当前时间不在任何课程时间段内,但当天还有未开始的课程,会显示"课间休息: 距离下一节课还有X分钟"
- 周末: 周六和周日如果没有课程安排,会显示"今天休息,无课程安排"
- 放学后: 如果当天课程已结束,会显示"今天课程已结束"
- 无课程安排: 如果当天没有任何课程,会显示"今天没有课程安排"
- 第一节课前: 如果当天有课程但还没到第一节课时间,会显示"今天没有课程进行中"
程序还会显示下一节课的信息,包括课程名称和距离开始的时间。
- 确保系统已安装 Python 3.6 或更高版本
- 下载或克隆本项目到本地
- 安装requirements.txt中所写依赖包(可以使用
pip install -r requirements.txt命令) - 若您使用的是Linux发行版,请您查看"Linux桌面环境适配说明"来安装依赖
对于Linux用户,特别是使用KDE或GNOME桌面环境的用户,可能需要手动安装额外的依赖包以确保程序正常运行:
Ubuntu/Debian及UOS,deepin,kylin等信创系统:
# 安装基本依赖
sudo apt-get update
sudo apt-get install python3-pil python3-pil.imagetk python3-tk
pip3 install pystray
# 基于GNOME的桌面环境额外需要
sudo apt-get install gnome-shell-extension-appindicator
# 基于KDE的桌面环境可能需要
sudo apt-get install libappindicator3-1请注意,Fedora系统需要安装这些依赖:
# 安装基本依赖
sudo dnf install python3-pillow python3-pillow-tk python3-tkinter
pip3 install pystray注意事项:
- 在某些Linux发行版中,当依赖完成安装后,可能需要重启桌面环境或系统才能使系统托盘正常显示
- 如果系统托盘无法正常显示,请检查桌面环境是否支持系统托盘功能
- KDE和GNOME环境下推荐使用不同的窗口类型以获得最佳显示效果
- 如果遇到"Failed to dock icon"错误,请确保已安装系统托盘支持组件,如Ubuntu/Debian系统中的
gnome-shell-extension-appindicator或Fedora系统中的相应组件 - 在Linux环境下,程序会自动尝试保持窗口置顶,如果发现窗口被其他应用遮挡,可以尝试重启程序
- 在Linux环境中若托盘菜单无法显示,可以直接右键点击悬浮窗来打开托盘菜单
- 运行
main.py启动程序 - 程序启动后会在桌面显示课程表悬浮窗
- 右键点击悬浮窗可打开系统托盘菜单(在Linux环境下需要安装相应依赖,如果系统托盘不可用,仍可通过右键菜单访问所有功能)
- 通过托盘菜单可以:
- 切换拖拽状态
- 打开课程表设置
- 打开UI设置
- 退出程序
- 下载并解压便携版ZIP包
- 进入解压后的目录,运行
TimeNest.exe启动程序 - 程序启动后会在桌面显示课程表悬浮窗
- 右键点击悬浮窗可打开系统托盘菜单
- 通过托盘菜单可以:
- 切换拖拽状态
- 打开课程表设置
- 打开UI设置
- 退出程序
main.py: 程序入口文件timetable.json: 课程表数据文件timetable_ui_settings.json: UI设置数据文件ui/: UI相关模块目录mainwindow.py: 主窗口实现tray.py: 系统托盘实现ui_settings.py: UI设置窗口temp_class_change.py: 临时调课设置窗口new_timetable_wizard.py: 新的课程表向导窗口,允许用户指定每节课的上下课时间classtable_wizard.py: 课表设置窗口
本程序部分由AI开发,请仔细甄别,使用Python和Tkinter,Pystray,PIL库实现。
本项目使用GitHub Actions实现自动编译和发布功能。当代码推送到main分支或创建版本标签(v*..)时,GitHub Actions将自动执行以下操作:
- 在Windows和Linux环境下安装Python依赖
- 使用Nuitka编译Python代码为可执行文件
- 打包编译后的文件为ZIP(Windows)或TAR.GZ(Linux)格式
- 对于版本标签推送,自动创建GitHub Release并上传构建产物
build_with_nuitka.py: Nuitka编译脚本,可在本地使用.github/workflows/auto-build.yml: GitHub Actions工作流配置文件
如果需要在本地使用Nuitka编译程序,可以运行以下命令:
python build_with_nuitka.py编译后的文件将位于dist_nuitka目录中。
hujinming0722ispassword |
ziyi127 |
Apache-2.0 license