前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python实战:拥有设闹钟功能的可视化动态闹钟的实现

Python实战:拥有设闹钟功能的可视化动态闹钟的实现

作者头像
Srlua
发布2024-07-13 08:27:54
760
发布2024-07-13 08:27:54
举报
文章被收录于专栏:CSDN社区搬运CSDN社区搬运

使用python实现动态闹钟

主要功能如下: 1、利用 turtle 等图形绘制库,绘制一个动态的数码管时钟,其中,时、分秒分别用不同颜色进行区分。 2、能够通过键盘设定闹钟,实现window 弹窗提醒。 3、通过PyInstaller 库转换成可执行文件。

PyInstaller

PyInstaller 是一个用于将 Python 应用程序打包成独立可执行文件的库。

它能够将 Python 脚本和相关的依赖项(如库、资源文件)打包成一个单独的可执行文件,这样用户可以在没有安装 Python 解释器或相关库的情况下运行应用程序。使用 PyInstaller 可以方便地创建跨平台的可执行文件,支持 Windows、Mac 和 Linux 等多个平台。

运行实例:

设闹钟:

先将文件打包
可以拖拽到桌面~
win+R,输入cmd
在命令行输入,python clock.py 22-28

clock.py为文件名,如果文件名不同,根据实际文件名修改 意思就是22点28分提醒

完整代码:

代码语言:javascript
复制
from turtle import *
from datetime import datetime
import time
import sys
from tkinter import messagebox, Tk


def drawGap():
    penup()
    fd(5)


def drawLine(draw):
    drawGap()
    pendown() if draw else penup()
    fd(40)
    drawGap()
    right(90)


def drawDigit(d):
    speed(0)
    drawLine(True) if d in [2, 3, 4, 5, 6, 8, 9] else drawLine(False)
    drawLine(True) if d in [0, 1, 3, 4, 5, 6, 7, 8, 9] else drawLine(False)
    drawLine(True) if d in [0, 2, 3, 5, 6, 8, 9] else drawLine(False)
    drawLine(True) if d in [0, 2, 6, 8] else drawLine(False)
    left(90)
    drawLine(True) if d in [0, 4, 5, 6, 8, 9] else drawLine(False)
    drawLine(True) if d in [0, 2, 3, 5, 6, 7, 8, 9] else drawLine(False)
    drawLine(True) if d in [0, 1, 2, 3, 4, 7, 8, 9] else drawLine(False)
    left(180)
    penup()
    fd(20)


def drawDate(date):
    pencolor('Red')
    for i in date:
        if i == "-":
            write('时', font=('Arial', 24, 'normal'))
            pencolor('Green')
            fd(40)
        elif i == '=':
            write('分', font=('Arial', 24, 'normal'))
            pencolor('Blue')
            fd(40)
        elif i == '+':
            write('秒', font=('Arial', 24, 'normal'))
        else:
            drawDigit(eval(i))


def main(alarm_time=None):
    setup(800, 350, 200, 200)
    hideturtle()
    pensize(8)
    tracer(False)  # 设置快速模式

    root = Tk()
    root.withdraw()  # 隐藏主窗口

    while True:
        clear()  # 清除之前绘制的内容
        penup()
        goto(-300, 0)
        current_time = datetime.now().strftime('%H-%M=%S+')
        drawDate(current_time)
        update()  # 手动刷新屏幕

        if alarm_time and current_time.startswith(alarm_time):
            messagebox.showinfo("闹钟提醒", "时间到了!")
            alarm_time = None  # 清除闹钟时间,防止重复提示

        time.sleep(1)


if __name__ == "__main__":
    alarm_time = None
    if len(sys.argv) > 1:
        alarm_time = sys.argv[1]  # 获取命令行输入的闹钟时间,格式为 HH-MM
    main(alarm_time)
    done()

希望对你有帮助!加油!

若您认为本文内容有益,请不吝赐予赞同并订阅,以便持续接收有价值的信息。衷心感谢您的关注和支持!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-07-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 使用python实现动态闹钟
    • PyInstaller 库
    • 运行实例:
      • 设闹钟:
        • 先将文件打包
        • 可以拖拽到桌面~
        • win+R,输入cmd
        • 在命令行输入,python clock.py 22-28
    • 完整代码:
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档