Python教程

python绘制动态时钟

本文主要是介绍python绘制动态时钟,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

turtle库基本命令

1、turtle.setup()函数:用于启动一个图形窗口,它有四个参数turtle.setup(width, height, startx, starty)分别是:启动窗口的宽度和高度表示窗口启动时,窗口左上角在屏幕中的坐标位置。 

2、turtle.pensize()函数:表示小乌龟运动轨迹的宽度。

3、turtle.pencolor()函数:表示小乌龟运动轨迹的颜色。它包含一个输入参数,这里我们把它设为蓝色,blue,其他颜色单词也可以使用。Turtle采用RGB方式来定义颜色,如果希望获得和图片中颜色一致的小蛇,请输入turtle.pencolor(“#3B9909”) 

4、turtle.seth(angle)函数:表示小乌龟启动时运动的方向。它包含一个输入参数,是角度值。0表示向东,90度向北,180度向西,270度向南;负值表示相反方向。程序中,我们让小乌龟向-40度启动爬行,即:向东南方向40度。 

5、turtle.circle()函数:让小乌龟沿着一个圆形爬行,参数rad描述圆形轨迹半径的位置,这个半径在小乌龟运行的左侧,rad远位置处。如果 rad为负值,则半径在小乌龟运行的右侧, 参数angle表示小乌龟沿着圆形爬行的弧度值。 

6、turtle.fd()函数:表示乌龟向前直线爬行移动表示小乌龟向前直线爬行移动,它有一个参数表示爬行的距离

datetime模块函数

1.datetime.date:表示日期的类,返回year-month-day

2.datetime.datetime:表示日期时间的类,返回年月日,时分秒

3.datetime.time:表示时间的类,

4.datetime.timedelta:表示时间间隔,即两个时间点的间隔

5.datetime.tzinfo:时区的相关信息

程序代码

 1from turtle import *  
 2from datetime import *  

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

 9def 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)   

19def Init():  
   global secHand, minHand, hurHand, printer  
   mode("logo")# 重置Turtle指向北  
   #建立三个表针Turtle并初始化  
   mkHand("secHand", 135)  
   mkHand("minHand",  110)  
   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)  
   #建立输出文字Turtle  
   printer = Turtle()  
   printer.hideturtle()  
   printer.penup()  

40def 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)  

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

59def Date(t):  
   y = t.year  
   m = t.month  
   d = t.day  
   return "%s %d %d" % (y, m, d)  

65def 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) #设置朝向,每秒转动6度  
   minHand.setheading(6*minute)  
   hurHand.setheading(30*hour)  
   tracer(False)  #不显示绘制的过程,直接显示绘制结果  
   printer.forward(50)  
   printer.write(Week(t), align="center",  
                 font=("Courier", 12, "bold"))  
   printer.forward(20)  
   printer.write(Date(t), align="center",  
                 font=("Courier", 14, "bold"))  
   printer.forward(120)  
   printer.write("python练手项目实战", align="center",  
                 font=("Courier", 14, "bold"))  
   printer.home()  
   tracer(True)  
   ontimer(Tick, 1000)#1000ms后继续调用tick  

90def main():  
   tracer(False) #使多个绘制对象同时显示  
   Init()  
   SetupClock(160)  
   tracer(True)  
   Tick()  
   mainloop()  

98if __name__ == "__main__":         
   main() 

效果图

图片


这篇关于python绘制动态时钟的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!