灵码做闹钟

简介: 【7月更文挑战第23天】

image.png

体验地址

import tkinter as tk
from tkinter import messagebox
import time
import threading

def update_clock():
    """更新时钟显示"""
    current_time = time.strftime("%H:%M:%S")
    clock_label.config(text=current_time)
    root.after(1000, update_clock)  # 每秒更新一次

def start_timer():
    """启动定时器"""
    try:
        seconds = int(timer_entry.get())
        if seconds <= 0:
            raise ValueError("Time must be positive.")
        messagebox.showinfo("Timer Started", f"Timer set for {seconds} seconds.")

        def countdown():
            """倒计时函数"""
            nonlocal seconds
            while seconds > 0:
                minutes, secs = divmod(seconds, 60)
                timer_label.config(text=f"{minutes:02d}:{secs:02d}")
                root.update()
                time.sleep(1)
                seconds -= 1
            messagebox.showinfo("Timer Ended", "Time's up!")

        # 在新线程中启动倒计时,避免阻塞GUI
        threading.Thread(target=countdown).start()
    except ValueError:
        messagebox.showerror("Invalid Input", "Please enter a valid number of seconds.")

# 创建主窗口
root = tk.Tk()
root.title("Digital Clock with Timer")

# 创建时钟显示
clock_label = tk.Label(root, font=("Arial", 48), bg="black", fg="white")
clock_label.pack(fill=tk.BOTH, expand=1)

# 创建定时器输入框和按钮
timer_frame = tk.Frame(root)
timer_frame.pack(pady=10)

timer_label = tk.Label(timer_frame, text="00:00", font=("Arial", 24))
timer_label.pack(side=tk.LEFT)

timer_entry = tk.Entry(timer_frame, width=5)
timer_entry.pack(side=tk.LEFT)

timer_button = tk.Button(timer_frame, text="Start Timer", command=start_timer)
timer_button.pack(side=tk.LEFT)

# 启动时钟更新
update_clock()

# 运行主循环
root.mainloop()

这段代码使用tkinter库创建了一个带有数字时钟和定时器功能的GUI应用程序。

update_clock函数用于更新时钟的显示,通过调用time.strftime函数获取当前时间,并将其设置为时钟标签的文本。然后使用root.after方法安排下一秒再次调用update_clock函数,实现每秒更新一次时钟。

start_timer函数用于启动定时器。首先,它从定时器输入框中获取用户输入的秒数,并进行类型转换和合法性检查。如果输入无效(非正整数),则弹出错误消息框。否则,弹出确认消息框,告知用户定时器已设置为指定的秒数。

在start_timer函数内部定义了一个countdown内嵌函数,用于执行倒计时逻辑。倒计时过程中,通过divmod函数计算剩余时间的分钟和秒数,并将其格式化后设置为定时器标签的文本。然后使用root.update方法更新GUI界面,避免阻塞。接着调用time.sleep函数暂停1秒,再减去1秒的计时,直到剩余时间为0,倒计时结束。

start_timer函数使用threading.Thread创建一个新的线程,在该线程中执行countdown函数,以避免阻塞GUI界面的更新。

主程序创建了一个主窗口,并设置标题为"Digital Clock with Timer"。然后创建了一个时钟标签用于显示当前时间,以及一个定时器框架,包含一个定时器标签用于显示倒计时时间,一个输入框用于输入定时器的秒数,和一个按钮用于启动定时器。最后调用update_clock函数启动时钟更新,并运行主循环。

目录
相关文章
|
9月前
|
人工智能 自然语言处理 程序员
用通义灵码开发一个Python时钟:手把手体验AI程序员加持下的智能编码
通义灵码是基于通义大模型的AI研发辅助工具,提供代码智能生成、研发问答、多文件修改等功能,帮助开发者提高编码效率。本文通过手把手教程,使用通义灵码开发一个简单的Python时钟程序,展示其高效、智能的编码体验。从环境准备到代码优化,通义灵码显著降低了开发门槛,提升了开发效率,适合新手和资深开发者。最终,你将体验到AI加持下的便捷与强大功能。
|
10月前
|
计算机视觉
RT-DETR改进策略【卷积层】| ICCV-2023 引入Dynamic Snake Convolution动态蛇形卷积,改进ResNetLayer
RT-DETR改进策略【卷积层】| ICCV-2023 引入Dynamic Snake Convolution动态蛇形卷积,改进ResNetLayer
338 15
RT-DETR改进策略【卷积层】| ICCV-2023 引入Dynamic Snake Convolution动态蛇形卷积,改进ResNetLayer
|
10月前
|
存储 SQL 监控
转转平台IM系统架构设计与实践(二):详细设计与实现
以转转IM架构为起点,介绍IM相关组件以及组件间的关系;以IM登陆和发消息的数据流转为跑道,介绍IM静态数据结构、登陆和发消息时的动态数据变化;以IM常见问题为风景,介绍保证IM实时性、可靠性、一致性的一般方案;以高可用、高并发为终点,介绍保证IM系统稳定及性能的小技巧。
236 6
|
搜索推荐 数据挖掘 数据处理
《探索 Faiss:原理与应用解析》
在数据驱动的时代,高效处理和搜索海量数据至关重要。Faiss 是一个专为大规模相似性搜索和聚类设计的库,擅长处理高维向量数据,广泛应用于文本处理、图像识别等领域。本文深入解析 Faiss 的原理、使用方法及其在图像检索、文本相似性比较和推荐系统中的实际应用,帮助读者掌握这一强大工具,提升数据处理能力。
646 2
|
安全 开发者 Python
Python的内存管理pymalloc
Python的内存管理pymalloc
|
监控 前端开发 JavaScript
浏览器节能机制导致Websocket断连的坑
浏览器节能机制导致Websocket断连的坑
285 0
|
内存技术
No.1 STM32F429IGT6开发板简介 (STM32F429/F767/H743)
No.1 STM32F429IGT6开发板简介 (STM32F429/F767/H743)
|
存储 监控 安全
对称加密在生产环境下的实践与注意事项
对称加密实践中,选择AES作为安全高效的算法,如在银行系统中。管理密钥要谨慎,避免硬编码,可借助KMS。使用如AES-CBC模式增强安全性,加盐哈希确保认证和完整性,如HMAC在API通信中的应用。注意性能优化,如并行处理和硬件加速在大数据场景。监控系统,适应新威胁,确保信息安全。【6月更文挑战第18天】
312 3
|
Linux UED iOS开发
Python colorama 设置控制台、命令行输出彩色文字
Python colorama 设置控制台、命令行输出彩色文字
245 0
|
Linux Shell