本期是Jokerlove为大家水一篇博客。
引言
总所周知,Jokerlove是一个很健忘的人,所以他总是让人觉得非常不靠谱(但健忘的Joker还是忘不了她)。一日,Jokerlove突然从椅子上站起,似乎是下定了什么决心。从那之后,Jokerlove成日念叨着什么“大学深埋”,什么“星星作废,月亮作废”。人们都觉得他疯了,但Jokerlove只是不语。于是Jokerlove就做了个桌面便签,事情的经过就是这样。
功能分析
Jokerlove开始思考这个脚本需要什么功能。他闭上双眼,思绪回到了那年冬(bushi)。
- 添加任务
- 删除任务
- 自动编号
- 窗口背景透明
- 窗口置于最上层
Jokerlove理清了思路,于是转身敲起了码。
产品展示
代码展示
Jokerlove使用了tkinter效果显著。
#by Jokerlove
import tkinter as tk
def delete_task(task):
"""删除指定的任务"""
task_list.remove(task)
update_task_list()
def add_task():
"""添加新任务"""
new_task = task_entry.get()
if new_task:
task_list.append(new_task)
task_entry.delete(0, tk.END)
update_task_list()
def update_task_list():
"""更新任务列表的显示"""
for widget in task_frame.winfo_children():
widget.destroy() # 清空当前任务框中的所有组件
for index, task in enumerate(task_list, start=1): # 添加编号
# 创建每个任务的行
task_frame_row = tk.Frame(task_frame, bg='lightgrey')
task_frame_row.pack(fill='x', padx=5, pady=2) # 设置行的填充和边距
# 任务标签,设置换行宽度并左对齐
task_label = tk.Label(task_frame_row, text=f"{index}. {task}", bg='lightgrey', padx=5, pady=5, wraplength=150,
anchor='w', justify='left')
task_label.pack(side='left', expand=True, anchor='nw') # 左侧显示任务名并顶部对齐
# 删除按钮
delete_button = tk.Button(task_frame_row, text='X', command=lambda t=task: delete_task(t), bg='lightgrey',
borderwidth=0)
delete_button.pack(side='right', padx=(5, 0)) # 右侧显示删除按钮,并加一些边距
def close_window():
"""关闭窗口"""
root.destroy()
def start_drag(event):
"""开始拖动窗口时记录鼠标位置"""
global x, y
x, y = event.x, event.y
def drag_window(event):
"""拖动窗口"""
root.geometry(f"+{event.x_root - x}+{event.y_root - y}") # 根据鼠标移动更新窗口位置
# 未完成的任务列表
task_list = ["任务1", "任务2", "任务3"]
# 创建透明窗口
root = tk.Tk()
root.attributes('-alpha', 0.7) # 设置透明度
root.overrideredirect(True) # 隐藏窗口边框
root.attributes('-topmost', True) # 确保窗口在所有程序之上
# 任务显示框,设置固定大小
task_frame = tk.Frame(root, bg='lightgrey', width=200, height=300)
task_frame.pack_propagate(False) # 不允许自动调整大小
task_frame.pack(padx=10, pady=10)
# 输入框
task_entry = tk.Entry(root)
task_entry.pack(pady=5)
# 添加任务按钮
add_button = tk.Button(root, text='添加任务', command=add_task)
add_button.pack(pady=5)
# 关闭按钮
close_button = tk.Button(root, text='X', command=close_window, bg='lightgrey', borderwidth=0)
close_button.place(relx=1.0, y=5, anchor='ne') # 放置在右上角
update_task_list() # 初始化任务列表显示
# 绑定拖动事件
root.bind("<Button-1>", start_drag) # 鼠标左键按下时开始拖动
root.bind("<B1-Motion>", drag_window) # 鼠标拖动时移动窗口
root.mainloop() # 运行主循环
emmm,感觉注释给的还是比较详细,大伙自提吧。
结语
Jokerlove第一次在这个号里水博客。之后也会持续为大家更新一些有用的小脚本。也欢迎朋友们在评论区给Jokerlove提供灵感。
得得得得得↗得得得得↘↗得得得得得↗得得得
(吉他
我试过握住她的手🖐
却还是一样寂寞😭😭
从没想过😢
原来自己那么丑陋🤥🤥
喔↑哦哦↓↓喔个哦哦喔↗原来自己那么丑陋😫😫
——撰稿人:Jokerlove