python实现开箱即用的桌面时钟

shigen日更文章的博客写手,擅长Java、python、vue、shell等编程语言和各种应用程序、脚本的开发。记录成长,分享认知,留住感动。
😅😅又发现好几天没有更新了,加班有点小严重呢。

今天分享的是pythonGUI开发方面的,我们先来看看效果:

其实之前的文章我也有相关的内容:

那这次又来了,岂不是重复的造轮子?事实并不是这样的。这次在之前的基础上实现的功能有:

  1. 桌面时钟可以时钟保持在所有窗口的最上边,且窗体的透明度为0.8
  2. 没有了关闭的功能,关闭需要在时钟上按任意键
  3. 支持跟随鼠标移动
  4. 支持二进制文件直接运行

以上就是shigen基于以前的代码再次做的优化。那就直接上代码吧:

python 复制代码
 # -*- encoding: utf-8 -*-
 __date__ = '2023/12/04 13:00:32'
 ​
 import tkinter as tk
 import time
 ​
 class ClockWindow(tk.Tk):
     def __init__(self):
         super().__init__()
         self.overrideredirect(1)                            # 去除窗口边框
         self.wm_attributes("-alpha", 0.8)                   # 设置透明度
         self.wm_attributes("-topmost", True)                # 始终处于顶层
 ​
         self.title('个性化时钟')
         self.geometry('300x100')
         self.configure(bg='black')
 ​
         self.time_label = tk.Label(self, text='', font=('Arial', 50), fg='white', bg='black')
         self.time_label.pack(expand=True)
 ​
         self.update_time()  
         self.bind("<ButtonPress-1>", self.StartMove)        #监听左键按下操作响应函数
         self.bind("<ButtonRelease-1>", self.StopMove)       #监听左键松开操作响应函数
         self.bind("<B1-Motion>", self.OnMotion)             #监听鼠标移动操作响应函数
         self.bind("<Any-KeyPress>", self.myquit)            #关闭
 ​
     def update_time(self):
         current_time = time.strftime('%H:%M:%S')
         self.time_label.config(text=current_time)
         self.time_label.after(1000, self.update_time)
         
     def StartMove(self,event):
         global x, y
         x = event.x
         y = event.y
  
     def StopMove(self,event):
         global x, y
         x = None
         y = None
  
     def OnMotion(self,event):
         global x, y
         deltax = event.x - x
         deltay = event.y - y
         self.geometry("+%s+%s" % (self.winfo_x() + deltax, self.winfo_y() + deltay))
         self.update()
         # print(event.x,event.y,self.winfo_x(),self.winfo_y(),self.winfo_width(),self.winfo_height())
     
     def myquit(self, *args):
         self.destroy()
 ​
     
 ​
 if __name__ == "__main__":
     app = ClockWindow()
     app.mainloop()
 ​

我们一改之前的运行方式:

复制代码
 python xxx.py

这次我们引入了一个神器:pyinstaller,我们需要先安装一下它:

复制代码
 pip install pyinstaller

对于它的特性,官方的解释是这样的:

  • pyinstaller 能够在 WindowsLinuxMac 等操作系统下将 Python 源文件打包,通过对源文件打包, Python 程序可以在没有安装 Python 的环境中运行,也可以作为一个独立文件方便传递和管理。

安装完毕之后,执行一下命令即可实现程序的打包:

r 复制代码
 pyinstaller -F xxx.py

最后,在文件的目录下会多了一个dist文件夹:

现在的运行方式就是直接去控制台:

其实还是有一点不方便,我直接双击还不能打开。但是还是有进步的,摆脱了对于python环境和各种依赖包的依赖,直接在终端打开,接近开箱即用了。更好的方式还在研究中,欢迎伙伴们的分享和交流。


以上就是今天分享的全部内容了,觉得不错的话,记得点赞 在看 关注支持一下哈,您的鼓励和支持将是shigen坚持日更的动力。同时,shigen在多个平台都有文章的同步,也可以同步的浏览和订阅:

平台 账号 链接
CSDN shigen01 shigen的CSDN主页
知乎 gen-2019 shigen的知乎主页
掘金 shigen01 shigen的掘金主页
腾讯云开发者社区 shigen shigen的腾讯云开发者社区主页
微信公众平台 shigen 公众号名:shigen

shigen一起,每天不一样!

相关推荐
喵个咪1 小时前
初学者入门:用 go-kratos-admin + protoc-gen-typescript-http 快速搭建企业级 Admin 系统
后端·typescript·go
用户21411832636022 小时前
手把手教你用Claude制作专属PPT生成器-从模板学习到自动生成全流程实战
后端
计算机毕设匠心工作室4 小时前
【python大数据毕设实战】全面皮肤病症状数据可视化分析系统、Hadoop、计算机毕业设计、包括数据爬取、数据分析、数据可视化、机器学习、实战教学
后端·python·mysql
摆烂工程师4 小时前
2025年12月最新的 Google AI One Pro 1年会员教育认证通关指南
前端·后端·ai编程
qq_12498707535 小时前
基于SpringBoot+vue的小黄蜂外卖平台(源码+论文+部署+安装)
java·开发语言·vue.js·spring boot·后端·mysql·毕业设计
代码与野兽5 小时前
AI交易,怎么让LLM自己挑选数据源?
前端·javascript·后端
天天摸鱼的java工程师5 小时前
JDK 25 到底更新了什么?这篇全景式解读带你全面掌握
java·后端
非鱼feiyu5 小时前
自关联数据表查询优化实践:以 Django + 递归 CTE 构建树结构为例
数据库·后端·django
零日失眠者5 小时前
这5个Python库一旦掌握就离不开
后端·python
幌才_loong5 小时前
.NET8 × Redis 实战宝典:从配置到落地,搞定高并发缓存就这篇!
后端·.net