Python中turtle库的使用实例


Posted in Python onSeptember 09, 2019

Turtle库是Python内置的图形化模块,属于标准库之一,位于Python安装目录的lib文件夹下,常用函数有以下几种:

画笔控制函数

  • penup():抬起画笔;
  • pendown():落下画笔;
  • pensize(width):画笔宽度;
  • pencolor(color):画笔颜色;

运动控制函数

  • forward(d)/fd(d):直行d个像素;
  • circle(r, extent = None):绘制半径为r,角度为extent的弧形,圆心默认在海龟左侧距离r的位置;

方向控制函数

  • setheading(angle)/seth(angle):改变前进方向;
  • left(angle):海龟左转;
  • right(angle):海龟右转;

Turtle库的使用

#coding=utf-8
#绘制蟒蛇
import turtle
turtle.penup()
turtle.pencolor("red")
turtle.forward(-250)
turtle.pendown()
turtle.pensize(10)
turtle.right(45)
for i in range(4):
  turtle.circle(40, 80)
  turtle.circle(-40, 80)
turtle.circle(40, 80 / 2)
turtle.fd(40)
turtle.circle(16, 180)
turtle.fd(40 * 2 / 3)
turtle.done()

结果

Python中turtle库的使用实例

#coding=utf-8
# 绘制五角星
import turtle
turtle.pensize(5)
turtle.pencolor("red")
turtle.forward(200)
for i in range(4):
  turtle.right(144)
  turtle.fd(200)
turtle.done()

结果

Python中turtle库的使用实例

#绘制时钟
# coding=utf-8
import turtle as tt
from datetime import *

# 当前日期属于一周的第几天
def Week(t):
  week = ["星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期日"]
  return week[t.weekday()]

# 获取当前时间
def Date(t):
  y = t.year
  m = t.month
  d = t.day
  cur_hour = t.hour;
  cur_min = t.minute;
  cur_sec = t.second;
  return "%s-%d-%d %d:%02d:%02d" % (y, m, d, cur_hour, cur_min, cur_sec)

# 移动画笔,距离为distance
def movePen(distance):
  tt.penup()
  tt.pensize(5)
  tt.pencolor("blue")
  tt.fd(distance)
  tt.pendown()

# 绘制表针
def makeHands(name, length):
  # 清空窗口,重置turtule状态为初始状态
  tt.reset()
  movePen(-length * 0.1)
  # 开始记录多边形的顶点
  tt.begin_poly()
  tt.fd(length * 1.1)
  # 停止记录多边形的顶点
  tt.end_poly()
  # 返回记录的多边形
  handForm = tt.get_poly()
  tt.register_shape(name, handForm)

# 初始化
def initial():
  global secHand, minHand, hurHand, printer
  # 重置方向向北(上),正角度为顺时针
  tt.mode("logo")
  # 建立并初始化表针
  makeHands("secHand", 180)
  makeHands("minHand", 150)
  makeHands("hurHand", 110)
  secHand = tt.Turtle()
  secHand.shape("secHand")
  minHand = tt.Turtle()
  minHand.shape("minHand")
  hurHand = tt.Turtle()
  hurHand.shape("hurHand")

  for hand in secHand, minHand, hurHand:
    hand.shapesize(1, 1, 4)
    hand.speed(0)

  # 输出文字
  printer = tt.Turtle()
  # 隐藏画笔
  printer.hideturtle()
  printer.penup()

# 绘制表盘外框
def drawClock(R):
  # 清空窗口,重置turtule状态为初始状态
  tt.reset()
  # 画笔尺寸
  tt.pensize(5)
  for i in range(60):
    movePen(R)
    if i % 5 == 0:
      tt.fd(20)
      movePen(-R - 20)

      movePen(R + 20)
      if i == 0:
        # 写文本
        tt.write(int(12), align="center", font=("Consolas", 14, "bold"))
      elif i == 30:
        movePen(25)
        tt.write(int(i / 5), align="center", font=("Consolas", 14, "bold"))
        movePen(-25)
      elif (i == 25 or i == 35):
        movePen(20)
        tt.write(int(i / 5), align="center", font=("Consolas", 14, "bold"))
        movePen(-20)
      else:
        tt.write(int(i / 5), align="center", font=("Consolas", 14, "bold"))
      movePen(-R - 20)
    else:
      # 绘制指定半径和颜色的点
      tt.dot(5, "red")
      movePen(-R)
    tt.right(6)

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

  tt.tracer(False)
  printer.fd(65)
  tt.pencolor("green")
  printer.write(Week(t), align="center", font = ("黑体", 14))
  printer.back(130)
  printer.write(Date(t), align="center", font = ("Consolas", 14))
  # 设置当前画笔位置为原点,方向朝东
  printer.home()
  tt.tracer(True)

  # 经过100ms后继续调用handsMove函数
  tt.ontimer(handsMove, 100)

# 调用定义的函数,打开和关闭动画,为更新图纸设置延迟;
tt.tracer(False)
initial()
drawClock(200)
tt.tracer(True)
handsMove()
tt.mainloop()

结果

Python中turtle库的使用实例

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python中enumerate函数用法实例分析
May 20 Python
Python的Flask站点中集成xhEditor文本编辑器的教程
Jun 13 Python
Redis使用watch完成秒杀抢购功能的代码
May 07 Python
python数据结构学习之实现线性表的顺序
Sep 28 Python
python 提取key 为中文的json 串方法
Dec 31 Python
Numpy数组array和矩阵matrix转换方法
Aug 05 Python
python3连接MySQL8.0的两种方式
Feb 17 Python
Python数据可视化实现漏斗图过程图解
Jul 20 Python
vscode调试django项目的方法
Aug 06 Python
python 如何实现遗传算法
Sep 22 Python
selenium判断元素是否存在的两种方法小结
Dec 07 Python
python scipy 稀疏矩阵的使用说明
May 26 Python
Django之路由层的实现
Sep 09 #Python
python中web框架的自定义创建
Sep 08 #Python
python web框架中实现原生分页
Sep 08 #Python
python中open函数的基本用法示例
Sep 07 #Python
Python3显示当前时间、计算时间差及时间加减法示例代码
Sep 07 #Python
利用python计算时间差(返回天数)
Sep 07 #Python
Django配置MySQL数据库的完整步骤
Sep 07 #Python
You might like
NO3第三帝国留言簿制作过程
2006/10/09 PHP
ThinkPHP实现将SESSION存入MYSQL的方法
2014/07/22 PHP
PHP Try-catch 语句使用技巧
2016/02/28 PHP
php json_encode与json_decode详解及实例
2016/12/13 PHP
Avengerls vs Newbee BO3 第三场2.18
2021/03/10 DOTA
JavaScript 开发规范要求(图文并茂)
2010/06/11 Javascript
jquery 查找select ,并触发事件的实现代码
2011/03/30 Javascript
js判断游览器类型及版本号的代码
2014/05/11 Javascript
自定义jQuery插件方式实现强制对象重绘的方法
2015/03/23 Javascript
jquery实现倒计时效果
2015/12/14 Javascript
Bootstrap进度条组件知识详解
2016/05/01 Javascript
Javascript6中字符串的四个新用法分享
2016/09/11 Javascript
js判断价格,必须为数字且不能为负数的实现方法
2016/10/07 Javascript
js操作浏览器的参数方法
2017/01/21 Javascript
nodejs实现OAuth2.0授权服务认证
2017/12/27 NodeJs
详解javascript 正则表达式之分组与前瞻匹配
2018/05/30 Javascript
JavaScript事件委托原理与用法实例分析
2018/06/07 Javascript
浅谈Angular 观察者模式理解
2018/11/01 Javascript
微信小程序按钮点击动画效果的实现
2019/09/04 Javascript
jquery使用echarts实现有向图可视化功能示例
2019/11/25 jQuery
vue实现一个获取按键展示快捷键效果的Input组件
2021/01/13 Vue.js
Python学习笔记(二)基础语法
2014/06/06 Python
使用Python保存网页上的图片或者保存页面为截图
2016/03/05 Python
Python实现随机漫步功能
2018/07/09 Python
对python requests的content和text方法的区别详解
2018/10/11 Python
在Django admin中编辑ManyToManyField的实现方法
2019/08/09 Python
python hmac模块验证客户端的合法性
2020/11/07 Python
Python模拟键盘输入自动登录TGP
2020/11/27 Python
基于pycharm 项目和项目文件命名规则的介绍
2021/01/15 Python
python数据抓取3种方法总结
2021/02/07 Python
使用phonegap操作数据库的实现方法
2017/03/31 HTML / CSS
出售房屋协议书范本
2014/10/06 职场文书
关于开学的感想
2015/08/10 职场文书
党员廉政准则心得体会
2016/01/20 职场文书
护士业务学习心得体会
2016/01/25 职场文书
工伤调解协议书
2016/03/21 职场文书