使用python画出时钟效果

python生成的时钟效果,大家可以参考:

使用的python版本:3.7.0 ,以下为源代码:

# time.py

from turtle import *
from datetime import *
import time

def SetupClock(radius):
	#建立表的外框
	reset()
	pensize()
	for i in range(60):
		Skip(radius)
		if i % 5 == 0:
			forward(20)
			Skip(-radius-20)
		else:
			dot(5)
			Skip(-radius)
		right(6)

def Skip(step):
	penup()
	forward(step)
	pendown()

#定义表针函数mkHand()
def mkHand(name, length):
	#注册Turtle形状,建立表针Turtle
	reset()
	Skip(-length*0.1)
	begin_poly()
	forward(length*1.1)
	end_poly()
	handForm = get_poly()
	register_shape(name, handForm)

def Init():
	global secHand, minHand, hurHand, printer
	mode("logo") # 重置Turtle指向北
	#建立三个表针Turtle并初始化
	mkHand("secHand", 125)
	mkHand("minHand", 130)
	mkHand("hurHand", 90)
	secHand = Turtle()
	secHand.shape("secHand")
	minHand = Turtle()
	minHand.shape("secHand")
	hurHand = Turtle()
	hurHand.shape("secHand")
	for hand in secHand, minHand, hurHand:
		hand.shapesize(1, 1, 3)
		hand.speed(0)
	#建立输出文字Turtle
	printer = Turtle()
	printer.hideturtle()
	printer.penup()


def get_week_day():
	week_day_dict = {
		0 : '星期一',
		1 : '星期二',
		2 : '星期三',
		3 : '星期四',
		4 : '星期五',
		5 : '星期六',
		6 : '星期天',
	}
	today = int(time.strftime("%w"))
	return week_day_dict[today]
#更新时钟函数Tick()
def Tick():
	#绘制表针的动态显示
	t = datetime.today()
	second = t.second + t.microsecond*0.000001
	minute = t.minute + second/60.0
	hour = t.hour + minute/60.0

	tracer(False)
	printer.forward(65)

	# print(get_week_day())
	printer.write(get_week_day(), align="center", font=("Courier", 14, "bold"))
	printer.back(130)
	printer.write((str(t.year)+"-"+str(t.month)+"-"+str(t.day)), align="center", font=("Courier", 14, "bold"))
	printer.home()
	tracer(True)
	secHand.setheading(6*second)
	minHand.setheading(6*minute)
	hurHand.setheading(30*hour)
	ontimer(Tick, 100) #100ms后继续调用tick

def main():
	tracer(False)
	Init()
	SetupClock(160)
	tracer(True)
	Tick()
	mainloop()

if __name__ == '__main__':
	main()

 

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值