python实现万能时钟

本文介绍了如何使用Python的tkinter库和time库创建一个动态显示当前时间的时钟,包括小时、分钟和秒针的实时更新。
摘要由CSDN通过智能技术生成

时钟是我们日常生活中最常见的也是必不可少的东西,你有没有想过用 Python 来画一个实时动态的时钟呢?下面我们来看看如何使用简单的代码实现一个动态时钟吧!

主要使用tkinter库: 这是Python的标准GUI(图形用户界面)库,用于创建和管理图形界面。通过tkinter,我们可以轻松地创建窗口、按钮、文本框等各种GUI元素。

time库:提供了各种时间相关的功能,来获取当前的系统时间。

来看看实现结果:

 源码如下:

import tkinter as tk
import time
import math

root = tk.Tk()
root.title("万能数字钟")

canvas = tk.Canvas(root, width=400, height=400, bg="white")
canvas.pack()

canvas.create_oval(50, 50, 350, 350, width=2, outline="black", fill="lightgray")

for i in range(1, 13):
    angle = math.radians(30 * i - 90)
    x = 200 + 100 * math.cos(angle)
    y = 200 + 100 * math.sin(angle)
    canvas.create_text(x, y, text=str(i), font=('calibri', 12, 'bold'))

time_label = tk.Label(root, font=('calibri', 14, 'bold'), bg='white')
time_label.pack()


def update_time():
    current_time = time.strftime("%H:%M:%S")
    time_label.config(text=current_time)
    root.after(1000, update_time)
    update_clock()

def update_date():
    current_date = time.strftime("%Y-%m-%d %A")
    date_label.config(text=current_date)
    date_label.after(60000, update_date)


date_label = tk.Label(root, font=('calibri', 10, 'bold'), bg='white')
date_label.pack()


def update_clock():
    current_time = time.localtime()
    second_angle = current_time.tm_sec * 6
    minute_angle = current_time.tm_min * 6 + current_time.tm_sec * 0.1
    hour_angle = (current_time.tm_hour % 12) * 30 + current_time.tm_min * 0.5


    canvas.delete("hands")

    hour_x = 200 + 60 * math.cos(math.radians(90 - hour_angle))
    hour_y = 200 - 60 * math.sin(math.radians(90 - hour_angle))
    canvas.create_line(200, 200, hour_x, hour_y, width=6, fill="darkblue", tags="hands")

    minute_x = 200 + 80 * math.cos(math.radians(90 - minute_angle))
    minute_y = 200 - 80 * math.sin(math.radians(90 - minute_angle))
    canvas.create_line(200, 200, minute_x, minute_y, width=4, fill="darkgreen", tags="hands")

    second_x = 200 + 90 * math.cos(math.radians(90 - second_angle))
    second_y = 200 - 90 * math.sin(math.radians(90 - second_angle))
    canvas.create_line(200, 200, second_x, second_y, width=2, fill="red", tags="hands")

    root.after(1000, update_clock)

update_time()
update_date()
update_clock()

root.mainloop()

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值