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文件,进入到该目录,发送到桌面快捷方式,点击该快捷方式,桌面出现时间控件。

相关推荐
浪客川13 小时前
idea 技巧 region 的使用
java·ide·intellij-idea
热爱生活的五柒14 小时前
如何快速删除vscode项目下所有的http链接
ide·vscode·编辑器
lbb 小魔仙14 小时前
从零搭建Python开发环境:Python安装 + VSCode + PyCharm 完整配置指南
vscode·python·pycharm
mykj155114 小时前
不止简单下单,代驾小程序系统打造完整智慧出行服务
小程序·代驾小程序开发·代驾小程序定制·代驾app软件
從南走到北14 小时前
JAVA无人共享系统无人场馆预约篮球系统源码支持小程序+公众号+APP+H5
java·开发语言·小程序
码农学院14 小时前
基于小程序云开发与Node.js的餐饮行业AI优化方案:智能推荐与订单预测实战
人工智能·小程序·node.js
慧都小项15 小时前
C/C++ 静态分析为什么要前移?Parasoft C/C++test 在 IDE 与 CI/CD 中的应用
c语言·c++·ide·功能测试·ai
Yolanda941 天前
【编程工具】关于IDEA的Mark Directory as操作的一点探索记录
java·ide·intellij-idea
JK Chen1 天前
UE 编辑器内 Source Code IDE 没有 Rider
ide·编辑器
mykj15512 天前
教培机构考公刷题小程序系统开发,降本增效稳续费
小程序·考公刷题小程序·刷题app开发