pycharm创建桌面时间控件小程序

文章目录

主要是为了走一遍python创建exe的流程。

步骤

1、新建一个项目,名称为:desktop_widget
2、创建一个python文件,名称为:desktop_widget.py,内容如下:

py 复制代码
import tkinter as tk
from datetime import datetime


class DesktopWidget:
    def __init__(self):
        self.root = tk.Tk()

        # --- 核心设置:让窗口像桌面图标/挂件 ---
        self.root.title("桌面小工具")
        self.root.geometry("200x60+100+100")  # 宽x高+离左距离+离上距离

        # 去除标题栏和边框 (关键步骤)
        self.root.overrideredirect(True)

        # 设置窗口透明度 (0.0 - 1.0),0.9 表示轻微透明,更有质感
        self.root.attributes("-alpha", 0.9)

        # 【重要】让窗口置顶,但不在任务栏显示 (Windows 特定)
        # 如果需要穿透点击(鼠标点不到它),需额外设置,这里先保持可交互
        self.root.attributes("-topmost", True)

        # 设置背景色和透明色 (实现不规则形状或透明背景的关键)
        bg_color = "#2b2b2b"  # 深灰色背景
        text_color = "#ffffff"
        self.root.configure(bg=bg_color)

        # --- 内容区域 ---
        self.label_time = tk.Label(
            self.root,
            text="",
            font=("Arial", 16, "bold"),
            bg=bg_color,
            fg=text_color,
            cursor="hand2"  # 鼠标放上去变成手型
        )
        self.label_time.pack(expand=True, fill="both")

        # 绑定鼠标事件以实现拖拽
        self.label_time.bind("<ButtonPress-1>", self.start_move)
        self.label_time.bind("<B1-Motion>", self.on_move)

        # 双击关闭
        self.label_time.bind("<Double-Button-1>", lambda e: self.root.destroy())

        # 启动更新循环
        self.update_time()

        # 启动主循环
        self.root.mainloop()

    def start_move(self, event):
        """记录鼠标按下时的位置"""
        self.x = event.x
        self.y = event.y

    def on_move(self, event):
        """计算移动距离并移动窗口"""
        deltax = event.x - self.x
        deltay = event.y - self.y
        x = self.root.winfo_x() + deltax
        y = self.root.winfo_y() + deltay
        self.root.geometry(f"+{x}+{y}")

    def update_time(self):
        """每秒更新时间"""
        now = datetime.now().strftime("%H:%M:%S")
        date = datetime.now().strftime("%m-%d")
        self.label_time.config(text=f"{date}\n{now}")
        # 1000毫秒后再次调用自己
        self.root.after(1000, self.update_time)


if __name__ == "__main__":
    try:
        app = DesktopWidget()
    except KeyboardInterrupt:
        pass

3、安装依赖,命令为:

bash 复制代码
pip install pyinstaller

4、准备图标

阿里巴巴矢量图标库下载一个图片,在通过在线工具转为icon格式,命令为my_icon.ico,并放到项目里。
5、执行安装命令

bash 复制代码
pyinstaller --onefile --windowed --icon=my_icon.ico desktop_widget.py

这样dist文件夹下会生成ext文件,进入到该目录,发送到桌面快捷方式,点击该快捷方式,桌面出现时间控件。

相关推荐
高级程序源7 小时前
SSM仓储管理系统31582-计算机课程设计、毕业设计
vue.js·python·mysql·小程序·flask·课程设计
青企通7 小时前
弱网环境下小程序首屏性能优化:从 5.2 秒到 1.4 秒的完整实践
性能优化·小程序
高级程序源9 小时前
springboot本地生活服务平台33399-计算机课程设计、毕业设计
vue.js·spring boot·python·mysql·小程序·flask·课程设计
高级程序源10 小时前
django房屋租赁系统28636-计算机课程设计、毕业设计
python·mysql·elasticsearch·小程序·django·flask·课程设计
CRMEB定制开发10 小时前
开源模型正在吃掉闭源的市场,这意味着什么?
小程序·公众号商城·商城源码·crmeb·开源商城
andrsted13 小时前
练题簿在线免费刷题:选择、填空、简答与排序,多种题型练出不同的掌握程度
学习·微信小程序·小程序·学习方法·刷题
长沙三为智能科技1 天前
家政小程序门店运营模块设计:会员、下单、派单、结算四段链路的落地拆解
python·小程序·内容运营
golang学习记1 天前
VSCode多光标迎来重大更新
ide·vscode·编辑器
weixin_177297220691 天前
回收小程序做自营还是撮合?先看你手里有什么
小程序
夜雪一千1 天前
如何取消PyCharm自动识别test开头文件并进入测试模式
ide·python·pycharm