import matplotlib.pyplot as plt
import numpy as np
import json
import os
from matplotlib.font_manager import FontProperties
import random
# 从文件加载任务数据
def load_tasks(filename):
try:
with open(filename, 'r') as f:
return json.load(f)
except (FileNotFoundError, json.JSONDecodeError):
return {}
# 保存任务数据到文件
def save_tasks(filename, tasks):
with open(filename, 'w') as f:
json.dump(tasks, f)
# 生成随机颜色
def generate_random_color():
return "#{:02x}{:02x}{:02x}".format(random.randint(0, 255), random.randint(0, 255), random.randint(0, 255))
# ...
# 主程序
def main():
filename = '/home/lisi/lyl-workspace/DinasaurSmallTools/tasks.json'
tasks = load_tasks(filename)
# 设置中文字体
font_path = '/home/lisi/lyl-workspace/DinasaurSmallTools/NotoSansCJK-Bold.ttc' # Noto Sans CJK 字体路径
font = FontProperties(fname=font_path, size=12)
plt.rcParams['font.sans-serif'] = [font.get_name()]
plt.rcParams['axes.unicode_minus'] = False
plt.ion() # 打开交互模式
fig, ax = plt.subplots()
# 更新甘特图
task_names = list(tasks.keys())
task_durations = list(tasks.values())
y_pos = np.arange(len(task_names))
# 用于存储任务颜色的字典
task_colors = {name: generate_random_color() for name in task_names}
colors = [task_colors[name] for name in task_names] # 使用任务颜色列表
ax.barh(y_pos, task_durations, color=colors, align='center')
ax.set_yticks(y_pos)
ax.set_yticklabels(task_names, fontproperties=font)
ax.set_xlabel('用时', fontproperties=font)
ax.set_title('彦霖冲冲冲!!', fontproperties=font)
ax.grid(True)
plt.pause(0.1) # 暂停一段时间以便图形显示
# 手动输入第一个任务名称
first_task_name = input("这里是一些乱码,请按下回车清空乱码,开启一天美好生活!:")
if first_task_name not in tasks:
tasks[first_task_name] = 0
while True:
task_name = input("请输入任务名称(输入exit退出): ")
if task_name == 'exit':
save_tasks(filename, tasks)
break
task_time = int(input("请输入任务用时(天): "))
if task_name in tasks:
tasks[task_name] += task_time
else:
if task_name: # 确保任务名称不为空
tasks[task_name] = task_time
task_colors[task_name] = generate_random_color()
# 更新甘特图
task_names = list(tasks.keys())
task_durations = list(tasks.values())
y_pos = np.arange(len(task_names))
colors = [task_colors[name] for name in task_names if name in task_colors] # 仅获取有颜色的任务的颜色
ax.clear()
ax.barh(y_pos, task_durations, color=colors, align='center')
ax.set_yticks(y_pos)
ax.set_yticklabels(task_names, fontproperties=font)
ax.set_xlabel('用时', fontproperties=font)
ax.set_title('彦霖冲冲冲!!', fontproperties=font)
ax.grid(True)
plt.pause(0.1) # 暂停一段时间以便图形显示
plt.ioff() # 关闭交互模式
plt.show()
if __name__ == "__main__":
main()
没有合适的资源?快使用搜索试试~ 我知道了~
任务进度甘特图电脑端小程序
共3个文件
ttc:1个
py:1个
json:1个
需积分: 3 0 下载量 16 浏览量
2023-08-24
21:04:47
上传
评论
收藏 16.16MB ZIP 举报
温馨提示
打工人必备电脑端程序! 任务用时显示,看看自己完成任务的时间有没有缩短,要进步呀!!冲鸭打工人!!!
资源推荐
资源详情
资源评论
收起资源包目录
DinasaurSmallTools.zip (3个子文件)
DinasaurSmallTools
tasks.json 254B
myGant.py 3KB
NotoSansCJK-Bold.ttc 19.96MB
共 3 条
- 1
资源评论
!柯西洗袜子
- 粉丝: 35
- 资源: 4
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功