Skip to content

cup113/class_form

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

灵动课表

注:此课表为重构版,未经长时间严格测试,很可能存在漏洞。尽量不要连续操作(尤其是动画时)。 请谅解,有条件可报告至 https://github.com/cup113/class_form/issues

使用方法

  1. 如果是第一次使用,编辑 config.json,主要更改"日程表""课程时间"字段。
  2. 点击class_form.exe(或者配置 Python 环境后运行 pythonw class_form.py,即可运行。
  3. 关闭程序:双击“关闭”后弹窗点击确认,或者借助任务管理器关闭占用内存大的那个任务。

注意事项

  1. 关于配置文件,详见“配置文件解释”,严格按照要求编辑。
  2. 不保证程序在连续运行一周后正常运行。日志文件在程序目录同级的logs中。
  3. 主窗口右侧四个按钮均需双击才能运行。
  4. 第二窗口(黄字)上的数字均表示时间,单位为分钟。一般表示“剩余时间/总时间”。
  5. “隐藏”表示从下课暂时回到上课状态一段时间,将窗口取消置顶。注意,最多延长至下一节课预备铃。点击其他软件界面即可将课表覆盖至下方。若无法覆盖,尝试点击一次课表再点击别处即可。
  6. “上课”表示从下课或预备铃期间直接进入下一节课,将窗口取消置顶。覆盖至下方方法同上。
  7. “换课”进入专门窗口,右侧“分隔”表示在这一节课下课后是否有分隔符;其余见配置文件解释-日程表
  8. “关闭”指关闭整个程序,如果只是想暂时隐藏可选择“隐藏”或“上课”。
  9. 双击“周x”的标签可以更换当日课表,用于应付调休。

配置文件解释

请按照 json 格式编辑。

配置文件默认为 config.json, 但更新有可能会将其覆盖,建议复制一份保存为config_custom.json。 如遇到特殊情况,可复制一份命名为config_special.json后修改。

读取时,优先读取config_special.json,如找不到再尝试读取config_custom.json,找不到再尝试config.json

日程表

  • 键表示星期几(1~7),值表示当日课程安排。
  • 请保证1~7 均有对应的列表,课程安排中均至少有 1 个课程(星期六、日如果没课,随意填写即可,不要空着)。
  • 请保证课程安排中的非分隔符数不超过课程时间中的列表长度
  • 课程安排建议每项一个字符。
  • 如果字符为分隔符,则不计入正式课程,只是便于排版。
  • 如果字符为 ~ ,则表示与下一堂课连堂(可连续使用),中途不进行上下课。注意连堂之间不要添加分隔符,且保证它后面跟着有效课程名称。将它与“课程时间”合理拆分合并,理论上实现全部课表。

课程时间

  • 格式为两个时间点中间用 - 连接;每个时间点用 hh:mmh:mm 格式。例:09:20-10:007:30-8:00
  • 请保证列表长度不能少于每日课程安排的非分隔符数。

分隔符

  • 用于分隔星期与课程区、课程区与功能区,以及较长间隔的课程群。
  • 一般在日程表中表示早操、午餐、晚餐的时间。
  • 注意,第一节课前和最后一节课后均不加分隔符

屏幕布局

  • 单位均为像素。请保证均为非负整数
  • “窗口上方”表示窗口距离屏幕上边缘的距离。主要为了便于窗口关闭等操作,不挡住操作栏。
  • “窗口间隔”指提示窗口和主窗口之间的间隔。注:窗口摆放位置按照两窗口两侧距离相等、之间等于窗口间隔的原则,放不下时都靠边,可能发生重叠。
  • “窗口内上下”“窗口内左右”指窗口内的内边距。

其他

  1. 自主课程:对于一般的课程,为了保证听课效率,不会实时显示剩余时间。而在此列表中的课程上课也会像下课一样显示剩余时间。
  2. 预备铃(单位:分钟)。应用于所有课程。
  3. 暂时隐藏时间(单位:分钟)。点击“隐藏”时延长上一次课程的时间。
  4. 透明度(0.0~1.0):主窗口和提示窗口的透明度。
  5. 侦测频率(单位:Hz):每秒钟检测屏幕的次数。调高可使点击事件的响应速度变快,调低可使CPU占用降低(注:一次侦测一般只占用 0.8ms,不需过度担心CPU占用。
  6. 字体:课表大字的字体。功能区按钮按照 0.4 倍,编辑窗口按钮按照 0.5 倍大小。如果有人看不清课表,建议放大字体;如果两窗口发生重叠,建议缩小字体。
  7. 颜色主题:调整文字、背景颜色。请保证hex 方式,即#+6位十六进制数表示(例:#FFFF00 黄色)。

特色介绍

高度可定制化

  • 自己的课表仅需在配置文件中修改
  • (Since 0.0) 支持课程连堂(~),应对特殊安排
  • (Since 0.0) 支持统一定义预备铃时间
  • (Since 0.0) 支持自定义透明度、刷新率、侦测频率
  • (Since 0.0) 支持自定义颜色主题
  • (Since 0.1) 支持自定义屏幕布局
  • (Changed in 0.0) 支持变长课表
  • (Changed in 0.0) 可定制任意时间的课表
  • (Changed in 0.2) 支持换课,有独立编辑窗口
  • 支持调休

课表显示美观

  • 上课时间窗口不置顶,不妨碍写字
  • 不会出现在任务栏,不影响观感
  • 支持用分隔符划分课表(如早操、午饭、晚饭等)
  • (Changed in 0.0) 窗口动画,变化不生硬
  • (Since 0.0) 调度算法使得动画和日常侦测更加连续
  • (Changed in 0.1) 窗口动画时间根据重要性不同可调节
  • (Since 0.0) 下课时前后两节课颜色逐渐变化
  • (Since 0.1) 程序有专门图标

传达信息充足

  • 上下课准时提醒
  • (Since 0.1) 预备铃响铃提醒
  • (Since 0.0) 支持下课后暂时隐藏课表或提前上课
  • (Since 0.0) 自习课和下课提醒剩余时间

代码结构清晰

  • 风格清爽
  • 具有一定的设计模式
  • 易于重构
  • 日志功能较完善

致谢

原版:

图标:

About

自动置顶调整展示课表的GUI软件 | A GUI software which shows school timetable, automatically adjusting topmost, classes, etc.

Topics

Resources

License

Stars

Watchers

Forks

Languages

  • Python 99.0%
  • Batchfile 1.0%