实用小工具——桌面便签

        本期是Jokerlove为大家水一篇博客。

引言

总所周知,Jokerlove是一个很健忘的人,所以他总是让人觉得非常不靠谱(但健忘的Joker还是忘不了她)。一日,Jokerlove突然从椅子上站起,似乎是下定了什么决心。从那之后,Jokerlove成日念叨着什么“大学深埋”,什么“星星作废,月亮作废”。人们都觉得他疯了,但Jokerlove只是不语。于是Jokerlove就做了个桌面便签,事情的经过就是这样。

功能分析

Jokerlove开始思考这个脚本需要什么功能。他闭上双眼,思绪回到了那年冬(bushi)。

  1. 添加任务
  2. 删除任务
  3. 自动编号
  4. 窗口背景透明
  5. 窗口置于最上层

 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值