您的位置:首页 > 编程语言 > Python开发

Python起步之利用Turtle进行时钟绘制

2017-07-30 17:54 801 查看
利用Turtle进行时钟绘制,并能够进行实时的计时:

# turtleClock.py

from turtle import *
from datetime import *

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

def mkHand(name,length):
#注册Turtle形状,建立表针Turtle
reset()#擦除上一次的绘制,重新绘制表针的位置
Skip(-length * 0.1)
begin_poly() #开始绘制
fd(length * 1.1)
end_poly()
handForm = get_poly()
register_shape(name,handForm)

def Init():
global secHand,minHand,hurHand,printer
mode('logo')#重置Turtle指向北
mkHand('secHand',125)
mkHand('minHand',120)
mkHand('hurHand',90)
secHand = Turtle()
secHand.shape('secHand')
minHand = Turtle()
minHand.shape('minHand')
hurHand = Turtle()
hurHand.shape('hurHand')

for hand in secHand,minHand,hurHand:
hand.shapesize(1,1,3)
hand.speed(0)
#建立输出文字
printer = Turtle()
printer.hideturtle()
printer.penup()

def SetupClock(radius):
reset()
pensize(7)
for i in range(60):
Skip(radius)
if i % 5 ==0:
forward(20)
Skip(-radius - 20)
else:
dot(5)
Skip(-radius)
right(6)

def Week(t):
week = ["星期一", "星期二", "星期三",
"星期四", "星期五", "星期六", "星期日"]

return week[t.weekday()]

def Date(t):
y = t.year
m = t.month
d = t.day
return '%s年%d月%d日' %(y,m,d)
def Time(t):
s = t.second
m = t.minute
h = t.hour
return '%s:%s:%s'%(h,m,s)

def Tick():
#绘制表针的动态显示
t = datetime.today()
second = t.second + t.microsecond*0.000001
minute = t.minute + second/60.0
hour = t.hour + minute/60.0
secHand.setheading(6*second)
minHand.setheading(6*minute)
hurHand.setheading(6*hour)

tracer(False)
printer.forward(-65)
printer.write(Week(t),align ='center',font = ('Courier',14,'bold'))
printer.back(40)
printer.write(Date(t),align = 'center',font = ('Courier',14,'bold'))
# printer.back(45)
# printer.write(Time(t),align = 'center',font = ('Courier',14,'bold'))
printer.home()
tracer(True)

ontimer(Tick,100)#100ms后继续调用tick

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

if __name__ == '__main__':
main()


运行结果图:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: