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

2022-07-26,,,,

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 程序设计现代方法 4 钟表专辑.doc》

下载本文的Word格式文档,以方便收藏与打印。