前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python实现开箱即用的桌面时钟

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

原创
作者头像
shigen
发布2023-12-05 14:03:39
2030
发布2023-12-05 14:03:39
举报

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()

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

代码语言:shell
复制
python xxx.py

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

代码语言:txt
复制
pip install pyinstaller
安装pyinstaller
安装pyinstaller

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

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

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

代码语言:shell
复制
pyinstaller -F xxx.py
打包输出
打包输出

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

生成的dist文件夹
生成的dist文件夹

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

运行程序
运行程序

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


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

平台

账号

链接

CSDN

shigen01

知乎

gen-2019

掘金

shigen01

腾讯云开发者社区

shigen

微信公众平台

shigen

公众号名:shigen

微信搜一搜
微信搜一搜

shigen一起,每天不一样!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云开发 CloudBase
云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档