欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

python 程序设计现代方法 4 钟表专辑

程序员文章站 2022-04-02 10:48:46
from turtle import *# 引入绘图模块from datetime import *# 引入时间模块speed(10)# 设置笔速def jump(x): # jump函数确定时间标距表心的距离 penup() # 抬笔,防止下面跳跃的时候有笔迹 forward(x) # 跳跃给定的距离x pendown() #...
from turtle import *			# 引入绘图模块
from datetime import *			# 引入时间模块

speed(10)						# 设置笔速
def jump(x):               		# jump函数确定时间标距表心的距离
    penup()                 	# 抬笔,防止下面跳跃的时候有笔迹
    forward(x)              	# 跳跃给定的距离x
    pendown()               	# 落笔,准备画
    penup()                 	# 抬笔,防止下一步出现笔迹
def ok(y):                  	# 设置函数ok准备画时间戳
    goto(0,0)
    dot(5)						# 在起始表心处画点
    pensize(5)              	# 设置笔宽

    for i in range(1,60):		# 进行60刻度的循环,但是range是开区间
        right(6)                # 旋转6度,寻找下一个刻度
        if i%5==0:              # if语句判断整点时候的时间戳
            jump(y-20)          # 跳跃
            pendown()           # 落笔
            forward(40)         # 画出时间戳
            penup()				# 抬笔
            forward(-y-20)		# 跳跃回起始点
        else:					# 如果不是整点刻度或者画短线
            # jump(y)			# 跳跃
            # dot(5)            # 画点
            # jump(-y)			# 跳回起始点
            jump(y)				# 跳跃
            pensize(2)			# 谁知笔宽,使非整点刻度明显区分整点刻度
            pendown()			# 落笔,准备画
            forward(10)			# 画出非整点刻度
            pensize(5)			# 调回笔道粗细
            penup()				# 抬笔,绘画结束
            jump(-y-10)			# 调回起始点
    # 后面这五行都是为了在60处画出整点标,因为在range函数中,不包括60,开区间
    right(6)                    # 手动旋转6度
    jump(y - 20)  				# 跳跃
    pendown()  					# 落笔
    forward(40) 				# 画出时间戳
    penup()						# 抬笔
    forward(-y - 20)			# 返回原点

def zhizhen(name,lang):     	# 定义表针,设置函数zhizhen,函数名随便起,好区分就行
    goto(0,0)
    reset()						# 返回起始位置
    jump(-0.1*lang)             # 确定指针的中心点
    begin_poly()				# 绘制指针开始
    forward(1.1*lang)           # 画出指针的长度
    end_poly()					# 绘制指针结束
    thename=get_poly()          # 注册此指针的名字
    register_shape(name,thename)# 返回注册信息

def init():                     # 设置函数,初始化表针
                                # 表明需要初始化的内容名字
    global miaozhen,fenzhen,shizhen,printer

    mode("logo")                # 重置表针方向,朝上

    miaozhen=Turtle()           # 使用绘图函数对表针进行定义
    zhizhen("miaozhen",130)     # 用zhizhen函数绘出表针的样子
    miaozhen.shape("miaozhen")  # 将秒针的图形赋给秒针的定义

    fenzhen = Turtle()          # 以下分针时针等意于秒针
    zhizhen("fenzhen", 100)
    fenzhen.shape("fenzhen")

    shizhen=Turtle()
    zhizhen("shizhen",60)
    shizhen.shape("shizhen")

                                # 临时调用cuxi定义表针的粗细区别
    for cuxi in miaozhen,fenzhen,shizhen:
        cuxi.shapesize(1,1,3)   # 粗细比分别是1.1.3
        cuxi.speed(0)           # 将表针旋转速度设为0

    printer=Turtle()            # 设计表盘中字的输出
    printer.hideturtle()        # 设置默认高度
    printer.penup()             # 抬笔

def week(t):
    week=["星期一","星期二","星期三","星期四","星期五","星期六","星期天"]
    return week[t.weekday()]    # 返回当前周

def day(t):                     # 设置函数day来返回当前时间的年月日
                                # 输出当前时间戳
    return "%s %d %d " %(t.year,t.month,t.day)
def tick():
    t=datetime.today()          # 将当前时间赋值给变量t
                                # 将当前秒赋给变量second,并且加上运行时间
    second=t.second+t.microsecond*0.000001
    minute=t.minute+t.second/60.0
    hour=t.hour+t.minute/60.0
                                # 用当前秒来判定指针应该指向的位置
    miaozhen.setheading(second*6)
    fenzhen.setheading(minute*6)
    shizhen.setheading(hour*30)

    tracer(False)               # 关闭绘画追踪
    printer.fd(70)              # 向前移动的距离
                                # 输出当前星期
    printer.write(week(t),align="center",font=("courier",14,"bold"))
    printer.back(50)            # 下移,准备输出当前年月日
                                # 输出当前年月日
    printer.write(day(t),align="center",font=("courier",14,"bold"))
    printer.home()              # 将位置和方向恢复到初始状态
    tracer(True)                # 开启绘画追踪
    ontimer(tick,100)           # 设置计时器,100ms之后继续进行调用tick函数
def main():                     # 使用函数main进行表的系统输出
    # tracer(False)               # 关闭绘画追踪,将这行注释掉可以详细查看代码运行
    init()                      # 初始化表针并且画出表针
    ok(200)                     # 绘画表盘
    tracer(True)                # 开启绘画追踪
    tick()                      # 写出星期,时间,按照时间改变指针指向
    done()                      #
main()                          # 调用函数main
  任课老师:汪峰

本文地址:https://blog.csdn.net/white_or_abc/article/details/110914148

相关标签: python