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中使用中文的方法
Feb 19 Python
Python实现约瑟夫环问题的方法
May 03 Python
整理Python 常用string函数(收藏)
May 30 Python
win系统下为Python3.5安装flask-mongoengine 库
Dec 20 Python
对python:print打印时加u的含义详解
Dec 15 Python
Python学习笔记之错误和异常及访问错误消息详解
Aug 08 Python
numpy.ndarray 实现对特定行或列取值
Dec 05 Python
Django实现图片上传功能步骤解析
Apr 22 Python
解决Pytorch自定义层出现多Variable共享内存错误问题
Jun 28 Python
利用python对mysql表做全局模糊搜索并分页实例
Jul 12 Python
python,Java,JavaScript实现indexOf
Sep 09 Python
python入门教程之基本算术运算符
Nov 13 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
PHP.MVC的模板标签系统(二)
2006/09/05 PHP
数据库的日期格式转换
2006/10/09 PHP
php生成zip压缩文件的方法详解
2013/06/09 PHP
基于JQUERY的两个ListBox子项互相调整的实现代码
2011/05/07 Javascript
autoPlay 基于jquery的图片自动播放效果
2011/12/07 Javascript
JavaScript避免内存泄露及内存管理技巧
2014/09/05 Javascript
jQuery中$.each使用详解
2015/01/29 Javascript
Jquery插件之Fancybox丰富的弹出层效果附源码下载
2015/12/02 Javascript
jQuery unbind()方法实例详解
2016/01/19 Javascript
angularjs 源码解析之scope
2016/08/22 Javascript
jQuery拖拽通过八个点改变div大小
2020/11/29 Javascript
js单页hash路由原理与应用实战详解
2017/08/14 Javascript
[js高手之路]HTML标签解释成DOM节点的实现方法
2017/08/31 Javascript
VUE2 前端实现 静态二级省市联动选择select的示例
2018/02/09 Javascript
electron实现qq快捷登录的方法示例
2018/10/22 Javascript
javascript自定义右键菜单插件
2019/12/16 Javascript
Element Backtop回到顶部的具体使用
2020/07/27 Javascript
JavaScript实现筛选数组
2021/03/02 Javascript
Python程序语言快速上手教程
2012/07/18 Python
python读取与写入csv格式文件的示例代码
2017/12/16 Python
python3中的md5加密实例
2018/05/29 Python
python爬取网页转换为PDF文件
2018/06/07 Python
基于Python pip用国内镜像下载的方法
2018/06/12 Python
python中的for循环
2018/09/28 Python
在PyCharm下使用 ipython 交互式编程的方法
2019/01/17 Python
为什么从Python 3.6开始字典有序并效率更高
2019/07/15 Python
Python3将数据保存为txt文件的方法
2019/09/12 Python
Bally巴利中国官网:经典瑞士鞋履、手袋及配饰奢侈品牌
2018/10/09 全球购物
《蚂蚁和蝈蝈》教学反思
2014/02/24 职场文书
企业宣传标语
2014/06/09 职场文书
2014四风问题对照检查材料范文
2014/09/15 职场文书
2014年环保工作总结
2014/11/26 职场文书
2015年创先争优活动总结
2015/03/27 职场文书
2015年测量员工作总结
2015/05/23 职场文书
离婚协议书范文2016
2016/03/18 职场文书
使用 CSS 轻松实现一些高频出现的奇形怪状按钮
2021/12/06 HTML / CSS