Python turtle库绘制时钟笔记
来源:互联网 发布:淘宝全屏轮播代码 编辑:程序博客网 时间:2024/05/16 05:01
from turtle import *from datetime import * def Skip(step): penup() forward(step) pendown() 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("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() 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 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(30*hour) tracer(False) printer.forward(65) printer.write(Week(t), align="center", font=("Courier", 14, "bold")) printer.back(130) printer.write(Date(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()
1.画静态表盘
·问题一:如何使得小乌龟在画的时候在圆心变换角度?解答:只要使用right(6)指令使得它每次重新出发画表盘时转6度就好。·问题二:reset()函数在画表格时候有什么用?解答:就是刷新之前的一切,重新执行该函数,但是不会重置其他函数里的内容,只会影响到该函数的内容的重置,重置以后图像消失,小乌龟回到初始位置。
def Skip(step): penup() forward(step) pendown()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) SetupClock(160)
2.画指针
#register_shape('名字',形状)给形状注册名字(turtle库方法)
#begin_poly()、end_poly()、get_poly()、register_shape()共同使用,画下该形状并且将形状注册为名字,然后可以拿到其他地方直接使用。
Seth(角度)=setheading(角度)
此操作执行时不保留之前转过的角度而是一直以小乌龟朝向右边为参照。
tracer(False)
tracer(True)
配合使用隐藏绘画轨迹
对应的有像hideturtle()隐藏小乌龟。showturtle()显示小乌龟。
0 0
- Python turtle库绘制时钟笔记
- python 用turtle库绘制时钟
- Python起步之利用Turtle进行时钟绘制
- Python:利用turtle库绘制iPhone4草图
- 运用Python的turtle库绘制等边三角形
- 利用python中的turtle库绘制图形
- 用Python的Turtle库绘制森林
- 利用Python的turtle库绘制玫瑰
- turtle库绘制五角星
- turtle库绘制树
- python学习笔记-turtle类库实例
- Python 绘图—使用Turtle库绘制动态钟表
- 【Python基础】1.4.3 Turtle库绘制多边形实例
- Turtle 库绘制一棵西兰花
- 用Python的Turtle模块绘制五星红旗
- Python图形工具turtle绘制国际象棋棋盘
- Python标准库-turtle
- [python学习]Turtle库
- thinkphp centos7 class POD not found
- leetcode 104. Maximum Depth of Binary Tree
- WAS下Sanp、heapdump、javacore
- 0x00和'0'
- Hololens官方教程精简版
- Python turtle库绘制时钟笔记
- 第8章 理解Window和WindowManager
- StringUtils源码
- wordpress怎么将文章发布在指定页面?
- 说下单元测试遇到的问题
- HadoopMR vs Spark vs Flink 特性对比
- 各种版本Qt_QtCreator_Qt_VS插件以及QT中文论坛_Qt开源社区的链接地址
- Response.sendRedirect()与RequestDispatcher.forward()
- 记录linux下安装maven