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

相关推荐
HeeRiver10 小时前
VSCode调用deepseek-v4-pro/flash api的方法
ide·vscode·api·deepseek-v4
小菜鸟阿呆yu13 小时前
【pycharm】安装包例如pymysql
ide·python·pycharm
文慧的科技江湖15 小时前
光储充一体化开源能源管理系统 需求说明书(简单版) - 慧知开源充电桩平台
小程序·开源·能源·光储充·光伏系统·实现光储充全设备统一监控·光储充一体化开源能源管理系统
森林猿15 小时前
IDEA-控制台乱码
java·ide·intellij-idea
eric*168817 小时前
Mac反编译小程序教程
小程序·小程序反编译
三品吉他手会点灯17 小时前
STM32 VSCode 开发-C语言程序运行后,终端中文乱码
c语言·ide·笔记·vscode·stm32·学习·编辑器
代码缝合怪17 小时前
解决新版 VSCode 无法 ssh 连接 WSL Ubuntu18.04的问题
ide·vscode·ssh·ubuntu18
打瞌睡的朱尤18 小时前
微信小程序50~75
微信小程序·小程序
小妖66618 小时前
android studio安装中文语言插件
android·ide·android studio