# -*- coding: utf-8 -*-
# @Time : 2020/1/29 16:56
# @Author : LiuZe
# @File : 钟表.py
# @Software : PyCharm
import tkinter as tk
import time
from tkinter import ARC
from math import *
def DQ_time():
local_time = time.localtime(time.time()) # 当前时间
if local_time[3]>=12:
local_time_hour=local_time[3]-12
# 当前时间的 时 分 秒
local_time_minute = local_time[4]
local_time_second = local_time[5]
return [local_time_hour,local_time_minute,local_time_second]
root = tk.Tk()
canvas = tk.Canvas(root, width=350, height=350, bg='white') # 创建一个画布,填充背景颜色为白色
# 画布的宽和高都为350
canvas.pack()
canvas.create_arc(53, 53, 297, 297, extent=359, style=ARC, width=2.0) # 一个为左上角坐标 另一个为右下角坐标
canvas.create_line(175, 53, 175, 60, width=2.5)
canvas.create_line(53, 175, 60, 175, width=2.5)
canvas.create_line(290, 175, 297, 175, width=2.5)
canvas.create_line(175, 290, 175, 297, width=2.5)
# canvas.create_line(70,114,72.25,117.1,width=2.5)
sin_30 = cos_60 = 0.5
sin_60 = cos_30 = sqrt(3) / 2
canvas.create_text(175, 25, text='钟表', font=('楷体', 25, 'bold'))
canvas.create_line(175 - 122 * cos_30, 175 - 122 * sin_30, 175 - 122 * cos_30 + 5.5 * sin_30,
175 - 122 * sin_30 + 5.5 * cos_30, width=2.5)
canvas.create_line(175 - 122 * cos_60, 175 - 122 * sin_60, 175 - 122 * cos_60 + 5.5 * sin_60,
175 - 122 * sin_60 + 5.5 * cos_60, width=2.5)
canvas.create_line(175 + 122 * cos_30 - 5.5 * cos_30, 175 - 122 * sin_30 - 5.5 * sin_30, 175 + 122 * cos_30,
175 - 122 * sin_30, width=2.5)
canvas.create_line(175 + 122 * cos_60 - 5.5 * cos_60, 175 - 122 * sin_60 + 5.5 * sin_60, 175 + 122 * cos_60,
175 - 122 * sin_60, width=2.5)
canvas.create_line(175 - 122 * cos_30 + 5.5 * sin_30, 175 + 122 * sin_30 - 5.5 * cos_30, 175 - 122 * cos_30,
175 + 122 * sin_30, width=2.5)
canvas.create_line(175 - 122 * cos_60 + 5.5 * sin_60, 175 + 122 * sin_60 - 5.5 * cos_60, 175 - 122 * cos_60,
175 + 122 * sin_60, width=2.5)
canvas.create_line(175 + 122 * cos_30 - 5.5 * sin_30, 175 + 122 * sin_30 - 5.5 * cos_30, 175 + 122 * cos_30,
175 + 122 * sin_30, width=2.5)
canvas.create_line(175 + 122 * cos_60 - 5.5 * sin_60, 175 + 122 * sin_60 - 5.5 * cos_60, 175 + 122 * cos_60,
175 + 122 * sin_60, width=2.5)
while True:
for JD_2 in range(DQ_time()[0],12):
canvas.create_line(175, 175, 175 + 60 * sin((pi / 6) * JD_2), 175 - 60 * cos((pi / 6) * JD_2), arrow=tk.LAST,
width=5.5)
canvas.update()
for JD_1 in range(DQ_time()[1], 60):
canvas.create_line(175, 175, 175 + 80 * sin((pi / 30) * JD_1), 175 - 80 * cos((pi / 30) * JD_1), arrow=tk.LAST,
width=2.5)
canvas.update()
for JD in range(DQ_time()[2], 60):
canvas.create_line(175, 175, 175 + 100 * sin((pi / 30) * JD), 175 - 100 * cos((pi / 30) * JD), arrow=tk.LAST)
canvas.update()
time.sleep(0.9999)
canvas.create_line(175, 175, 175 + 100 * sin((pi / 30) * JD), 175 - 100 * cos((pi / 30) * JD), fill='white',
arrow=tk.LAST)
# 再画一条线,使这条线盖住上一条线,颜色为白色
# 秒针
canvas.create_line(175, 175, 175 + 80 * sin((pi / 30) * JD_1), 175 - 80 * cos((pi / 30) * JD_1), fill='white',arrow=tk.LAST, width=2.5)
# 再画一条线,使这条线盖住上一条线,颜色为白色
# 分针
canvas.create_line(175, 175, 175 + 60 * sin((pi / 6) * JD_2), 175 - 60 * cos((pi / 6) * JD_2), arrow=tk.LAST,
width=5.5,fill='white')
# 时针
root.mainloop()
注意:因为该表运行了for循环,所以会在这些方面上会花费一些时间,故显示的时间与标准会有一定出入。
如果大家觉得有什么改进的地方,记得评论。
运行结果: